2

次のようなバイト数を読み取ったとします。

$data = fread($fp, 4096);

ファイルの最後に達すると読み取りが停止するためfread、どのくらい読み取られたかを正確に知るにはどうすればよいですか? うまくいくでしょうかstrlen($data)?それとも、それは潜在的に間違っている可能性がありますか?


私が達成しようとしているのは、いくつかのバイトを読み取ってから、読み取る前の場所に戻ることです。ファイルがより大きくなる可能性があり、それを台無しにする可能性があるため、算術演算 ( ftell, fread, ftell, subract, ) の使用を避けようとしています。私がしたいのは、ただ実行することですが、そのためには、読み取ったバイト数を知る必要があります...fseekPHP_INT_MAXfseek($fp, -$bytes_read, SEEK_CUR)

4

2 に答える 2

6

現在のファイル位置を取得するためにfread使用した後。ftell($fp)

于 2011-05-27T21:11:35.833 に答える
4

これを確認してください(テストされていません):

mb_strlen($data, '8bit')

2 番目の引数'8bit'は、関数がバイト数を返すように強制します。

mb_strlen の php マニュアルのコメントにあります。

于 2011-05-27T21:56:16.493 に答える