fread()、fgets()、fgetc()、file_get_contents() 與 file() 函數用於從文件中讀取內容。
fread() 函數用於讀取文件(可安全用於二進制文件)。
語法:
string fread( int handle, int length )
fread() 從文件指針 handle 讀取最多 length 個字節。當遇到下列任何一種情況時,會停止讀取文件:
從文件中讀取 10 個字節(包括空格):
<?php // http://www.manongjc.com/article/1346.html $filename = "test.txt"; $fh = fopen($filename, "r"); echo fread($fh, "10"); fclose($fh); ?>
提示
如果只是想將一個文件的內容讀入到一個字符串中,應該用性能更好的 file_get_contents() 。
fgets() 函數用於從文件中讀取 一行 數據,並將文件指針指向下一行。
提示:如果想在讀取的時候去掉文件中的 HTML 標記,請使用 fgetss() 函數。
語法:
string fgets( int handle [, int length] )
fgets() 從 handle 指向的文件中讀取一行並返回長度最多為 length-1 字節的字符串。碰到換行符(包括在返回值中)、EOF 或者已經讀取了 length-1 字節後停止。如果沒有指定 length ,則默認為 1K ,或者說 1024 字節。
例子:
<?php $fh = @fopen("test.txt","r") or die("打開 test.txt 文件出錯!"); // if條件避免無效指針 // http://www.manongjc.com/article/1347.html if($fh){ while(!feof($fh)) { echo fgets($fh), '<br />'; } } fclose($fh); ?>
補充說明
feof() 函數測試文件指針是否到了文件結束的位置,該文件指針必須有效,如果是無效的資源,則會陷入無限循環中。參見《PHP 文件指針函數》
fgetc() 函數用於 逐字 讀取文件數據,直到文件結束。
語法:
string fgetc( resource handle )
例子:
<?php $fh = @fopen("test.txt","r") or die("打開 test.txt 文件出錯!"); // http://www.manongjc.com/article/1348.html if($fh){ while(!feof($fh)) { echo fgetc($fh); } } fclose($fh); ?>
file_get_contents() 函數用於把 整個文件 讀入一個字符串,成功返回一個字符串,失敗則返回 FALSE。
語法:
string file_get_contents( string filename [, int offset [, int maxlen]] )
參數說明:
參數 說明
filename 要讀取的文件名稱
offset 可選,指定讀取開始的位置,默認為文件開始位置
maxlen 可選,指定讀取文件的長度,單位字節
例子:
<?php // 讀取時同事將換行符轉換成 <br /> echo nl2br(file_get_contents('test.txt')); ?>
file() 函數用於把 整個文件 讀入一個數組中,數組中的每個單元都是文件中相應的一行,包括換行符在內。成功返回一個數組,失敗則返回 FALSE。
語法:
array file( string filename )
例子:
<?php $lines = file('test.txt'); // 在數組中循環並加上行號 // http://www.manongjc.com/article/1349.html foreach ($lines as $line_num => $line) { echo "Line #{$line_num} : ",$line,'<br />'; } ?>
test.txt 文件內容:
你好!
這是第二行文字。
浏覽器顯示:
Line #0 : 你好!
Line #1 : 這是第二行文字。