【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
を返します。