array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'zh', ), 'this' => array ( 0 => 'function.fgets.php', 1 => 'fgets', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => '文件系统函数', ), 'prev' => array ( 0 => 'function.fgetcsv.php', 1 => 'fgetcsv', ), 'next' => array ( 0 => 'function.fgetss.php', 1 => 'fgetss', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'zh', 'path' => 'reference/filesystem/functions/fgets.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
fgets — 从文件指针中读取一行
stream
文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。
length
从 handle
指向的文件中读取一行并返回长度最多为 length
- 1
字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1
字节后停止(看先碰到那一种情况)。如果没有指定
length
,则默认为 1K,或者说 1024 字节。
示例 #1 逐行读取文件
<?php
$fp = @fopen("/tmp/inputfile.txt", "r");
if ($fp) {
while (($buffer = fgets($fp, 4096)) !== false) {
echo $buffer;
}
if (!feof($fp)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($fp);
}
?>
注意: 在读取在 Macintosh 电脑中或由其创建的文件时, 如果 PHP 不能正确的识别行结束符,启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。
注意:
习惯了 C 语言中 fgets() 语法的人应该注意到
EOF
是怎样被返回的。