fread

関数の概要

PHPの fread 関数は、ファイルポインタから指定したバイト数だけデータを読み込むために使われます。主にファイルの一部だけ読み取りたい場合や大きなファイルを分割して処理したいときに便利な関数です。指定したバイト数分だけ読み込み、バッファリングなどを自動で処理してくれます。

パラメータの説明

  • resource $stream — ファイルポインタリソース。fopen 関数などで開いたファイルハンドルを指定します。
  • int $length — 読み込むバイト数を整数で指定します。

戻り値

読み込んだデータを含む文字列を返します。指定したバイト数未満のデータしか読み込めなかった場合は、その分の文字列を返します。ファイルの終端(EOF)に達して読み込むデータがない場合は、空文字列を返します。読み込みに失敗した場合は FALSE を返します。

使用例

基本的な使い方

<?php
$fp = fopen("sample.txt", "r");
if ($fp) {
    $data = fread($fp, 100); // 先頭から100バイト読み込む
    fclose($fp);
    echo $data;
} else {
    echo "ファイルが開けませんでした。";
}
?>

ファイルを開いて先頭から100バイト分だけ読み取り、その内容を表示しています。

複数回に分けてファイルを読む

<?php
$fp = fopen("sample.txt", "r");
if ($fp) {
    while (!feof($fp)) {
        $buffer = fread($fp, 50); // 50バイトずつ読み込む
        echo $buffer;
    }
    fclose($fp);
} else {
    echo "ファイルが開けませんでした。";
}
?>

大きなファイルを50バイトごとに区切って読み込み、順に出力しています。feof 関数でファイル終端を確認しながら処理しています。

バイナリファイルの読み込み

<?php
$fp = fopen("image.jpg", "rb");
if ($fp) {
    $contents = fread($fp, filesize("image.jpg"));
    fclose($fp);
    // 画像データとして処理可能
} else {
    echo "ファイルが開けませんでした。";
}
?>

画像ファイルなどのバイナリデータを読み込むときは、バイナリモード("rb")で開き、ファイルサイズ分を読み込む方法がよく使われます。

関連する関数

  • fopen — ファイルを開く
  • fgetc — 1文字ずつ読み込む
  • fgets — 1行ずつ読み込む
  • feof — ファイル終端の判定
  • fwrite — ファイルに書き込む
  • fclose — ファイルを閉じる

まとめ

fread はPHPでファイルから指定バイト数だけ効率的に読み込むための関数です。テキストファイルだけでなくバイナリファイルにも対応しているため、多用途に使えます。fopen と組み合わせて使い、ファイルを小分けに読み込むなど実務でも役立つ関数なので、是非使い方を習得しておきましょう。