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