如何使 feof 不计算文件的最后一行?

How to make it so feof doesn't count the last line of file?

所以我的代码是这样设置的

 while(! feof($fn))  {
  $result = fgets($fn);
// some code
}

我该怎么做才能忽略文本文件中的最后一行。 我的文本文件已设置,因此当添加内容时,它会在之后添加一个新行。这样做会由于最后一行没有输入数据而产生偏移量错误。

我已经尝试这样做了,所以它在数据之前添加了一个新行,但随后又产生了另一个错误,因为它会有一个偏移量,第一行是中断。 (如果需要更多信息,我会编辑问题)

几乎相同的代码你可以忽略最后一行:

while($result = fgets($fn)) {
    if (!feof($fn)) {
        // process all lines except the last one
    }
}
当无法读取更多行时,

fgets() 将 return false,因此它也像一种 feof()

您可以在代码中添加一个额外的条件来检查读取的内容,如果这是一个空行则跳过循环中的其余代码...

$result = fgets($fn);
if ( empty(trim($result)) ) {
    continue;
}

这也将处理文件中任何位置的空行。