(PHP 4, PHP 5)
fgets — 從文件指針中讀取一行
說明
string fgets ( resource$handle
[, int $length
] )
從文件指針中讀取一行。
參數
handle
文件指針必須是有效的,必須指向由 fopen() 或 fsockopen() 成功打開的文件(并還未由 fclose() 關閉)。
length
從 handle
指向的文件中讀取一行并返回長度最多為 length
- 1
字節的字符串。碰到換行符(包括在返回值中)、EOF 或者已經讀取了 length - 1
字節后停止(看先碰到那一種情況)。如果沒有指定
length
,則默認為 1K,或者說 1024 字節。
Note:
從 PHP 4.3 開始,忽略掉 length 則行的長度被假定為 1024,將繼續從流中讀取數據直到行結束。如果文件中的大多數行都大于 8KB,則在腳本中指定最大行的長度在利用資源上更為有效。
返回值
從指針 handle
指向的文件中讀取了 length
- 1 字節后返回字符串。
如果文件指針中沒有更多的數據了則返回 FALSE
。
錯誤發生時返回 FALSE
。
更新日志
版本
說明
4.3.0
fgets() 開始二進制安全
4.2.0
length
參數成為可選。
范例
Example #1 逐行讀取文件
<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() failn";
}
fclose($handle);
}
?>
注釋
Note: 在讀取在 Macintosh 電腦中或由其創建的文件時, 如果 PHP 不能正確的識別行結束符,啟用運行時配置可選項 auto_detect_line_endings 也許可以解決此問題。
Note:
習慣了 C 語言中 fgets() 語法的人應該注意到 EOF 是怎樣被返回的。
參見
fgetss() - 從文件指針中讀取一行并過濾掉 HTML 標記 fread() - 讀取文件(可安全用于二進制文件) fgetc() - 從文件指針中讀取字符 stream_get_line() - 從資源流里讀取一行直到給定的定界符 fopen() - 打開文件或者 URL popen() - 打開進程文件指針 fsockopen() - 打開一個網絡連接或者一個Unix套接字連接 stream_set_timeout() - Set timeout period on a stream