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

作成日: 更新日:

stream_get_line関数は、ファイルやネットワーク通信など、連続したデータ源(ストリーム)から、指定された長さまで、または特定の区切り文字(デリミタ)が見つかるまでデータを読み込むための関数です。この関数は、大量のデータの中から特定の情報を効率的に抽出したい場合や、レコードごとに区切られたデータを処理する際に特に役立ちます。

例えば、ログファイルから特定の区切り文字で区切られたメッセージを一行ずつ読み込んだり、ネットワークからの受信データを行単位で処理したりする場面で利用されます。データの読み込みはストリームの現在の位置から開始され、指定された最大バイト数に達するか、あるいは終端文字が見つかるまでデータが取得されます。終端文字が見つかった場合、その文字自体は読み込んだ文字列には含まれませんが、ストリームのポインタは終端文字の次へと進みます。

関数は、読み込んだ文字列を返しますが、エラーが発生した場合やストリームの終端に達してこれ以上データが読み込めない場合にはブール値のfalseを返します。これにより、データの読み込み状況を正確に判断し、適切なエラーハンドリングを行うことが可能です。特定の区切り文字を指定できるため、標準的な改行コード以外の区切り文字で構成されるデータ形式にも柔軟に対応できる点が特徴です。

基本的な使い方

構文(syntax)

<?php
$stream = fopen("php://temp", "r+"); // 一時的なストリームリソースを開く
fwrite($stream, "Sample line one.\nSample line two."); // ストリームにデータを書き込む
rewind($stream); // ストリームポインタを先頭に戻す

$max_bytes_to_read = 1024; // 読み込む最大バイト数
$line_ending_delimiter = "\n"; // 行の終端文字

// ストリームから最大バイト数まで、または終端文字までデータを読み込む
$line_data = stream_get_line($stream, $max_bytes_to_read, $line_ending_delimiter);

fclose($stream); // ストリームを閉じる
?>

引数(parameters)

resource $stream, int $length, string $ending = ''

  • resource $stream: 読み込み対象のストリームリソースを指定します。
  • int $length: 読み込む最大バイト数を指定します。
  • string $ending = '': 読み込みを終了する区切り文字を指定します。省略時は空文字列で、指定がない場合は指定されたバイト数まで読み込みます。

戻り値(return)

string|false

指定されたストリームから1行を読み込み、文字列として返します。読み込みに失敗した場合はfalseを返します。

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