ホームページ  >  記事  >  バックエンド開発  >  php freadでファイルを読み取る際の注意点

php freadでファイルを読み取る際の注意点

高洛峰
高洛峰オリジナル
2016-12-21 16:01:581298ブラウズ

php fread 関数の紹介

string fread (int handle, int length)

fread() は、ファイル ポインタ ハンドルから最大 length バイトを読み取ります。この関数は、最大 length バイトの読み取り後、または EOF に達したとき、または (ネットワーク ストリームの場合) パケットが使用可能になったとき、または (ユーザー空間ストリームを開いた後) 8192 バイトの読み取りが完了したときに呼び出されます。 。

fread() の例:

<?php
  $file = "data.txt";
  $fh = fopen($file, "rt");
  $userdata = fread($fh, filesize($file));
  fclose($fh);
?>

phpでfreadを使用する際の注意点

1 freadが大きなファイルを読み書きする際のエラーの解決策

ファイルがphp.iniを超える場合fread を使用してファイルを読み取る場合、設定された最大メモリ使用量が文字列形式で返されるとエラーが表示されます。では、文字化けしないように a.txt で使用されているエンコード方式をどのように識別するのでしょうか?

PHP 7.0未満のバージョンでは、ファイル操作で文字エンコーディングが認識されません。

バイトデータでのみ出力されますが、PHPソースコードファイルと出力HTMLの文字コードが一致していれば正しく表示できます。

3. fread がファイルを読み取るとき、常に余分な null 文字が存在します

<?
  set_time_limit(0);//设置脚本执行时间无限长
  $flie="flexbuilder_linux_install_a5_112409.bin";//大文件超过php.ini中的内存配置
  $fp=fopen($flie,"r");
  $content="";
  $filename="123.bin";//存为新文件
  $handle=fopen($filename,"a");//写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之
  while(!feof($fp)){//测试文件指针是否到了文件结束的位置
    $content=fread($fp,1024);
    fwrite($handle,$content);
  }
  fclose($fp);
  fclose($handle);
  echo "数据成功写入文件";
?>

上記のコードを使用してファイルを読み取ると、時々余分な null 文字が存在することがあります。これは、ファイルがテキスト形式で保存されているテキスト ファイルであるため、ファイルの終わりを示す特別なバイトがあり、それを rb で開くと、自然に読み取ることができます。最後のスペシャルバイト。 r で開き、fgets で読み込みます。

この記事が皆さんのお役に立てれば幸いです。このサイトを応援していただきありがとうございます!

php fread でファイルを読み取る際の注意事項に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

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