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

gzgets関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

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

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

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

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

構文(syntax)

1<?php
2
3// 圧縮ファイル (example.gz) は事前に存在し、アクセス可能であると仮定します。
4$gzfile = gzopen("example.gz", "r");
5
6if ($gzfile) {
7    // gzgets関数を使用して、圧縮ファイルから最大1024バイト、
8    // または改行文字までの1行を読み込みます。
9    $line = gzgets($gzfile, 1024);
10
11    // ファイルを閉じます。
12    gzclose($gzfile);
13}
14
15?>

引数(parameters)

resource $stream, ?int $length = null

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

戻り値(return)

string|false

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

関連コンテンツ