PHP が fread を使用してファイルを読み取る問題については、常に余分な null 文字が存在します。
コードは次のとおりです。
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
$fileSize = filesize($filePath);
$handle = fopen($filePath, "rb");
while (!feof($handle)) {
var_dump(fread($handle, $fileSize));
//会多输出一次空字符
}
アドバイスをお願いします、ありがとう!
-----解決策---------
fread($handle, $fileSize)
ファイルにはちょうど $fileSize バイトのコンテンツが含まれており、スムーズに読み取られるため、プログラムはファイルが最後に達したことを検出しません。次に 2 番目のループが実行され、この時点でポインタは最後の位置にあり、読み取るものは何も残っていないため、システムはファイル ポインタを一番下に設定し、feof() が true を返すようにします。 PHP のオペレーティング ファイル システムと C のオペレーティング ファイル システムにはほとんど違いはありません。これに関しては、C の feof() についての非常に詳細な説明があります。
------解決策---------実は、本題までは到達できませんでした。解決策としては、$fileSize+1 を追加するか、fread($handle, filesize ($filename)); をループせずにファイルの内容全体を読み取ることができます。
------解決策---------trim()?
------解決策----------------------ファイルが大きくない場合は、ファイルをすべて読み込んでください。配列の最後の配列を削除します。ファイルが大きい場合は別の方法を考えますが、これがどのような影響を与えるかはわかりません。それが本当にあなたに影響を与えているのであれば、それを取り除くのは難しくないはずです。
------解決策------------------
WINDOWS プラットフォームを使用しているため、ファイルはテキストで開く保存されたコンテンツであり、ファイルの終わりをマークする特別なバイトが最後にあります。これを rb で開くと、最後の特別なバイトを自然に読み取ることができます。 。
r で開き、fgets で読み込みます。