PHP檔案處理—如何讀取檔案(一行,整個檔案)
#相對開啟和關閉檔案來說,讀寫檔案更複雜一些。這裡主要從讀取資料和寫入資料兩方面進行講解。
那麼在上一篇文章《PHP文件處理—打開和關閉文件》中介紹了打開和關閉文件,打開文件是所有操作文件的前提,而關閉是所有操作文件的結尾,那我們今天就來介紹如何讀取文件!
從檔案讀取資料
從檔案讀取數據,可以讀取一個字元、一行字串或是整個文件,也可以讀取指定長度的字串。
1.讀取整個檔案:readfile()、flie()以及file_get_contents()三個函數,下面我們將一一介紹!
readfile()函數
readfile()函數用於讀入一個檔案並且將其寫入到輸出緩衝,如果發生錯誤則傳回 false。 函數語法格式如下:
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )
使用 readfile()函數,不需要開啟檔案和關閉文件,也不需要 echo ,print等輸出語句,直接先寫出檔案路徑就可以了。
flie()函數
flie()函數也可以讀取整個檔案的內容,只是file()函數將檔案內容按行存放到陣列中,包括換行符在內,如果讀取失敗則傳回false。函數的語法格式如下:
array file ( string $filename [, int $flags = 0 [, resource $context ]] )
file_get_contents()函數
file_get_contents()函數將檔案的內容(fliename)讀入到一個字串中。如果沒有 offset 和 maxlen參數 ,將從參數offset所指定的位置開始讀取長度為 maxlen的字串。如果讀取失敗那麼就會回傳false。函數語法格式如下;
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
此函數適用於二進位文件,是講整個文件的內容讀入到一個字串中的首選方法。
下面的實例就是使用上面的三個函數分數來讀取檔案內容,具體程式碼如下:
<html> <body> <table width="500" border="1" cellpadding="0" cellspacing="0" > <tr> <td width="253" height="100" align="right" valign="middle" scope="col">使用 readfile()函数读取文件内容:</td> <td width="241" height="100" valign="middle" scope="col"> <!--使用 readfile()函数读取tm.txt文件内容--> <?php readfile("tm.txt");?></td> </tr> <tr> <td height="100" align="right" valign="middle">使用 file()函数读取文件内容:</td> <td height="100" valign="middle" > <!--使用 file()函数读取tm.txt文件内容--> <?php $f_arr = file("tm.txt"); foreach ($f_arr as $cont){ echo $cont."<br>"; } ?> </td> </tr> <tr> <td width="250" height="25" align="right" valign="middle" scope="col">使用flie_get_contents()函数读取文件内容:</td> <td height="25" valign="middle" align="center" scope="col" > <!--使用 flie_get_contents()函数读取tm.txt文件内容--> <?php $f_chr = file_get_contents("tm.txt"); echo $f_chr; ?> </td> </tr> </table> </body> </html>
輸出結果為:
2.讀取一行資料:fgets()函數與fgetss()函數
(1) fgets()函數
fgets()函數用於一次讀取一行資料。函數語法格式如下:
string fgets ( resource $handle [, int $length ] )
參數 handle 是被讀取的文件,參數length是要讀取的資料長度。函數能夠實作從 handle 指定檔案中讀取一行並傳回長度最大值為 length-1 個位元組的字串。在於帶換行符,EOF 或讀取了 length-1 個自己後停止。如果忽略 length-1 參數,那麼讀取資料直到行結束。
(2)fgetss()函數
fgetss()函數是fgets()函數的變體,用來讀取一行資料。同事,fgetss()函數會過濾掉被讀取內容中的 HTML 和 PHP標記。函數語法格式如下:
string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )
函數能夠從讀取的檔案中過濾掉任何 html 和 PHP 標記,可以使用 allowable_tags 參數來控制哪些標記不被過濾掉。
下面實例使用上面那個函數分別讀取一個文件,並顯示出來。觀察它們有什麼區別。具體程式碼如下:
<html> <body> <table border="1" cellpadding="0" cellspacing="0" > <tr> <td align="right" valign="middle" scope="col">使用fgets()函数:</td> <td valign="middle" scope="col" align="center"> <!--使用fgets()函数读取fun.php文件--> <?php $fopen = fopen("1.php","rb"); while (!feof($fopen)){ echo fgets($fopen); } fclose($fopen); ?></td> </tr> <tr> <td align="right" valign="middle">使用 fgetss()函数:</td> <td align="center" valign="middle" > <!--使用fgetss()函数读取--> <?php $fopen = fopen("1.php","rb"); while (!feof($fopen)){ echo fgetss($fopen); } fclose($fopen); ?></td> </tr> </table> </body> </html>
輸出結果為:
本篇介紹了兩種讀取文件的方法,一個是讀取整個文件,一個是讀取一行資料的,在下面一篇文章我將介紹讀取一個字元和指定長度的字符串,具體內容請閱讀《PHP檔案處理—讀取檔案(一個字元,字符串)》!
以上是PHP檔案處理—如何讀取檔案(一行,整個檔案)的詳細內容。更多資訊請關注PHP中文網其他相關文章!