【PHP8.x】gzgets関数の使い方

作成日: 更新日:

gzgets関数は、gzip形式で圧縮されたファイルから一行を読み込む関数です。PHPの標準的なファイル操作関数であるfgetsに似ていますが、gzgetsはgzip圧縮されたファイルに特化して利用されます。この関数は、gzopen関数によって開かれたgzipファイルのリソース(ファイルポインタ)を指定し、そこからデータを読み取ります。

具体的には、gzgetsはファイルポインタから最大で指定されたバイト数分のデータを読み込みます。ただし、改行文字(\n)に遭遇した場合や、ファイルの終端(EOF)に達した場合は、指定バイト数に満たなくても読み込みを停止します。読み込まれた改行文字も文字列に含まれます。

第一引数には、gzopen関数で取得したgzipファイルのリソースを渡します。第二引数である$lengthはオプションで、読み込む最大バイト数を指定します。この値を省略した場合、デフォルトで1024バイトが読み込まれます。

成功した場合、読み込まれた文字列が返されます。読み込み中にエラーが発生した場合や、ファイルの終端に達して何も読み込めなかった場合は、falseが返されます。この関数は、NULLバイトを含む文字列も正しく扱えるため、バイナリデータの一部としてテキストを読み込む際にも安全に使用できます。大きなgzipファイルを一行ずつ処理することで、メモリ使用量を抑えながら効率的にデータを扱うことができます。ファイルの読み込みが完了したら、必ずgzclose関数でファイルリソースを閉じるようにしてください。

基本的な使い方

構文(syntax)

<?php

// 圧縮ファイル (example.gz) は事前に存在し、アクセス可能であると仮定します。
$gzfile = gzopen("example.gz", "r");

if ($gzfile) {
    // gzgets関数を使用して、圧縮ファイルから最大1024バイト、
    // または改行文字までの1行を読み込みます。
    $line = gzgets($gzfile, 1024);

    // ファイルを閉じます。
    gzclose($gzfile);
}

?>

引数(parameters)

resource $stream, ?int $length = null

  • resource $stream: 読み込むgzip圧縮されたストリームリソース
  • ?int $length = null: 読み込む最大バイト数。省略した場合、1行読み込む

戻り値(return)

string|false

指定されたファイルポインタから1行を読み込み、文字列として返します。読み込みに失敗した場合やファイルの終端に達した場合は false を返します。

【PHP8.x】gzgets関数の使い方 | いっしー@Webエンジニア