問題:
読み取りと表示を試行するときPHPのwhileループ(!feof())を使用してテキストファイルの内容を解析すると、すべてのデータが出力されるわけではありません。ファイルの最後の文字列が切り取られています。
回答:
この問題の根本原因は、EOF チェックの配置にあります。元のコードは、最後の行を出力する前にファイルの終わりをチェックしていました。この結果、最後の行が部分的に切り詰められました。
これに対処するには、EOF チェックを読み取りプロセス内に統合する必要があります。修正されたコードは次のとおりです:
<?php $line_count = 0; $handle = fopen("item_sets.txt", "r"); if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { $trimmed = trim($buffer); echo $trimmed; $line_count++; } } else { echo 'Unexpected error opening file'; } fclose($handle); echo PHP_EOL.PHP_EOL.PHP_EOL.'Lines read from file = ' . $line_count; ?>
追加の考慮事項:
この修正されたコードを使用すると、テキスト ファイルの内容全体が正常に読み取られ、最後の行も含めて表示されます。
以上がPHP の「while (!feof())」ループで不完全なファイル出力が生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。