php文件讀取操作
Jun 08, 2016 pm 05:25 PMphp教程文件讀取操作
讀取文本文件中存儲(chǔ)數(shù)據(jù)的方式主要涉及的三個(gè)步驟及部分文件操作函數(shù)如下:
1、打開文件(文件操作函數(shù):fopen)
2、文件數(shù)據(jù)讀取(文件操作函數(shù):fgets、file、readfile、feof等)
3、關(guān)閉文件(文件操作函數(shù):fclose)
在代碼實(shí)例中,默認(rèn)php文件讀取操作函數(shù)為fgets,fgetss與fgetcsv函數(shù)的功能與fgets一樣,都是一次讀取文件中的一行,直到文件末尾。此處我設(shè)定讀取文本文件中的數(shù)據(jù)長(zhǎng)度為100,即最大讀取長(zhǎng)度為99(100-1),這樣,當(dāng)遇到換行符n或文件結(jié)束符eof或從文件中讀取完99個(gè)字節(jié)時(shí)就停止讀取數(shù)據(jù)。fgets函數(shù)返回文件讀取的數(shù)據(jù),字符串型。
fgetss函數(shù)是fgets函數(shù)的一個(gè)變體,它能夠剝離php和html標(biāo)記,通過(guò)傳遞第三參數(shù)來(lái)過(guò)濾不必要的數(shù)據(jù),可以提高網(wǎng)站安全性,比如留言本中可以過(guò)濾用戶的輸入數(shù)據(jù),fgetss函數(shù)原型如下:
復(fù)制代碼 代碼如下:
string fgetss(resource fp,int length, string[optional] allowable_tags)
allowable_tags參數(shù)是可選項(xiàng),實(shí)例中我事先在leaps教程oulcn.txt文件中寫入了包含html、body、h1標(biāo)記的一行文字,然后在代碼中我設(shè)定只允許h1標(biāo)記可以出現(xiàn)。
fgetcsv函數(shù)是fgets的另一個(gè)變體,區(qū)別在與,當(dāng)你的文本文件中寫入的數(shù)據(jù)使用了定界符,可以使用fgetcsv將一行分解成多行,返回的結(jié)果存儲(chǔ)在數(shù)組中,函數(shù)原型如下
復(fù)制代碼 代碼如下:
array fgetcsv(resource fp,int length, string[optional] delimiter,string[optional] enclosure)
delimiter是可選項(xiàng),由于在之前寫入文件的數(shù)據(jù)中我是用了t,所以在實(shí)例中文件讀取函數(shù)fgetcsv中的定界符我使用了t,然后通過(guò)print_r打印出fgetcsv返回的數(shù)組結(jié)構(gòu)。
三個(gè)php文件讀取操作函數(shù)fgets、fgetss、fgetcsv共同之處在于事先都需要使用fopen函數(shù)打開讀取的文件,同時(shí)通過(guò)feof函數(shù)判斷是否文件指針到達(dá)文件末尾,切記在讀取操作完成后使用fclose函數(shù)關(guān)閉文件。
fgetc:讀取單個(gè)字符
fgetc函數(shù)用來(lái)讀取一個(gè)字符,在代碼實(shí)例中我通過(guò)一個(gè)一個(gè)讀取字符,當(dāng)遇到n字符時(shí)將其轉(zhuǎn)換成html文件中的br標(biāo)記,以便在游覽器中顯示具體的換行效果,當(dāng)然此函數(shù)的效率肯定是比較低的,不建議使用。
php文件讀取操作函數(shù)readfile、fpassthru、file之間的區(qū)別
三個(gè)函數(shù)共同之處是一次可以讀取整個(gè)文件,而不是一次讀一行或一個(gè)字符。區(qū)別在于:
readfile函數(shù)打開文件,返回文件內(nèi)容直接輸出在游覽器上,與fopen函數(shù)一樣,函數(shù)返回值為文件的字符總數(shù),readfile函數(shù)的第二個(gè)參數(shù)是可選項(xiàng),指明php是否應(yīng)在include_path中查找文件。在代碼實(shí)例中,我使用echo語(yǔ)句不是用來(lái)輸出讀取的文件內(nèi)容,而是輸出讀取的文件字符總數(shù),讀取的文件內(nèi)容readfile函數(shù)已自動(dòng)輸出,這一點(diǎn)必須明確!readfile函數(shù)原型如下:
復(fù)制代碼 代碼如下:
int readfile(string filename,int[optional] use_include_path)
file函數(shù)是另一種讀取文件的方法,它是把讀取的文件內(nèi)容送到一個(gè)數(shù)組中,每行一個(gè)數(shù)組單元。file函數(shù)原型如下:
復(fù)制代碼 代碼如下:array file(string filename,bool[optional] use_include_path)
fpassthru()函數(shù)用來(lái)輸出文件指針處的所有剩余數(shù)據(jù),即如果文件指針并不在開頭,它只輸出文件指針后面的數(shù)據(jù)。該函數(shù)將給定的文件指針從當(dāng)前的位置讀取到eof,并把結(jié)果寫到輸出緩沖區(qū),返回值為輸出的字符數(shù)。發(fā)生錯(cuò)誤時(shí),返回false。與readfile()函數(shù)相比,fpassthru()函數(shù)需要首先打開文件,數(shù)據(jù)讀取完畢后要關(guān)閉文件。
fread與file_exists、filesize函數(shù)
fread函數(shù)也是讀取文件的一種方法,其可以從文件中讀取任意字節(jié),要么滿足length要么讀到文件末尾。read函數(shù)原型如下:
復(fù)制代碼 代碼如下:string fread(resource fp,int length)
在用到fread函數(shù)時(shí),當(dāng)你想讀取文件全部數(shù)據(jù),又不知道文件數(shù)據(jù)長(zhǎng)度時(shí),filesize函數(shù)可以解決這個(gè)問(wèn)題,即
復(fù)制代碼 代碼如下:
@$fp = fopen("leapsoulcn.txt","r") or die("system error");
echo fread($fp,filesize("leapsoulcn.txt"));
fclose($fp);
?>
在php文件讀寫操作教程中我們還沒(méi)有使用過(guò)file_exists函數(shù),通常在php網(wǎng)站開發(fā)中,出于各種考慮,有時(shí)當(dāng)文件不存在時(shí),我們并不像創(chuàng)建新文件,這時(shí)我們就需要在使用fopen函數(shù)前使用file_exists函數(shù)判斷文件是否存在,即
復(fù)制代碼 代碼如下:
if(file_exists("leapsoulcn.txt"))
{
//進(jìn)行php文件讀寫操作
}
?>
以上就是php文件讀寫操作教程之文件讀取操作的各種方法介紹,通過(guò)合理應(yīng)用php文件讀寫操作函數(shù),可以實(shí)現(xiàn)簡(jiǎn)單的留言本、網(wǎng)站log記錄等功

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP Blob? ??? ???? ??: 1. PHP ?? ??? ?????. 2. "function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })? ?? } ” ???? ???? Blob? ??? ??? ? ????.

?? ??? ???? Java? File.length() ??? ??????. ?? ??? ?? ??? ??? ? ?? ???? ?? ?????. Java? ?? ??? ?? ?? ??? ??, ? ??( ) File ???? ??????. ? ????? ? ??? ???? ?? ??? ???? ??? ???? ?? ?? ??? ?????. ??, ??? ???? ??? ???? File ??? ???? ???. File ??? ???? ??? ??? ????: Filef

?? ??? ?? ??? ????? ??? ?????. 51CTO Hongmeng ??? ???? https://ost.51cto.com ?? ?? DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. ??????? ????? ??? ?????. >???->CreateProgect. ??? ??: [OpenHarmony]EmptyAbility: ???? ?? shici, ?????? ??? ?? com.nut.shici ? ?????? ?? ?? XXX(??, ?? ??, ?? ??)? ?????. CompileSDK10, ??: ????. ??

Java? String.valueOf() ??? ???? ?? ??? ??? ???? ?? Java ???? ?? ??? ??? ???? ???? ? ? ???? ??? String ???? valueOf() ??? ???? ????. ? ??? ?? ??? ??? ????? ???? ?? ??? ??? ??? ? ????. ? ????? ?? ??? ?? ??? ?? String.valueOf() ??? ???? ??? ???? ??? ?? ? ?? ?? ??? ?????.

Java? File.renameTo() ??? ???? ?? ??? ????. Java ???????? ?? ??? ??? ?? ??? ????. Java? ?? ??? ???? ?? File ???? ???? renameTo() ??? ?? ??? ?? ?? ? ????. ? ????? Java? File.renameTo() ??? ???? ?? ??? ??? ??? ???? ?? ?? ??? ?????. File.renameTo() ??? File ???? ??????.

char ??? ???? ???? ??: ??? ?? ??? ? ????. char ??? ???? ?? ?? ???? ????? ??? {char a[]=" abc d\0efg ";string s=a;} ??? ?????. ??? ???? ?????.

Java? File.getParent() ??? ???? ??? ?? ??? ?????. Java ???????? ??? ??? ???? ?? ??? ????. ??? ??? ?? ??? ??? ??? ?? ??? ???? ?? ??? ????. Java? File ???? ???? ??? ?? ??? ???? getParent() ???? ?????. File ???? ?? ? ??? ?? Java? ?? ?????. ?? ?? ? ??? ???? ?? ??? ???? ?????. ? ?, ????.

Java? String.replace() ??? ???? ???? ??(???) ??? Java?? ???? ?? ?????. ?, ??? ??? ???? ?? ?? ??? ? ????. ??? ????? ?? ??? ???? ??? ?? ??? ??? ? ????. ?? Java? String ???? ?? replacement() ???? ???? ??? ??? ??? ? ????. String ???? replacement() ????? ? ?? ??? ????.
