【PHP8.x】stream_get_contents関数の使い方
作成日: 更新日:
stream_get_contents関数は、オープンされたストリーム(データ源)から残りのデータをすべて文字列として読み込む関数です。この関数は、ファイル、ネットワーク接続、またはその他のデータストリームといったさまざまなソースから、現在ストリームポインタが指す位置から終端までのデータを効率的に取得し、単一の文字列としてメモリに格納します。例えば、fopen()
関数で開かれたファイルの内容を一度にすべて読み込んだり、ソケット接続から送られてきたデータ全体を受け取ったりする際に大変役立ちます。
第一引数には、読み込み元のストリームリソースを指定します。これはfopen()
やfsockopen()
などの関数によって作成されたものです。オプションの第二引数で読み込む最大バイト数を指定でき、さらにオプションの第三引数で読み込みを開始するオフセット(ストリームの先頭からのバイト位置)を設定することも可能です。これらの引数を利用することで、データの読み込み範囲を細かく制御できます。
成功すると読み込んだデータを文字列として返し、エラーが発生した場合や読み込みが完了する前に問題があった場合はfalse
を返します。特に大きなデータを扱う際には、メモリを大量に消費する可能性があるため注意が必要です。
基本的な使い方
構文(syntax)
<?php
$filePath = 'example.txt';
file_put_contents($filePath, 'Hello, PHP Stream!');
$stream = fopen($filePath, 'r');
if ($stream) {
$contents = stream_get_contents($stream);
echo $contents;
fclose($stream);
}
unlink($filePath); // 例で作成したファイルを削除
引数(parameters)
resource $stream, int $length = -1, int $offset = -1
- resource $stream: 読み込み対象のストリームリソース
- int $length = -1: 読み込む最大バイト数。-1を指定すると、ストリームの終端まで読み込みます。
- int $offset = -1: ストリームのどこから読み込みを開始するかを指定するオフセット。-1を指定すると、現在のストリーム位置から読み込みます。
戻り値(return)
string|false
ストリームから読み取った内容を文字列として返します。読み取りに失敗した場合は false を返します。