ホームページ >バックエンド開発 >PHPチュートリアル >fread を使用してファイルを読み取る PHP に関連する問題については、常に余分な null 文字が存在します。

fread を使用してファイルを読み取る PHP に関連する問題については、常に余分な null 文字が存在します。

WBOY
WBOYオリジナル
2016-06-13 13:26:141452ブラウズ

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 で読み込みます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。