file_get_contents
(PHP 4 >= 4.3.0, PHP 5)
file_get_contents — ファイルの内容を全て文字列に読み込む
説明
$filename
[, bool $use_include_path = false
[, resource $context
[, int $offset = -1
[, int $maxlen
]]]] )
この関数は file() と似ていますが、
offset で指定した場所から開始し
maxlen バイト分だけ
ファイルの内容を文字列に読み込むという点が異なります。
失敗した場合、 file_get_contents() は FALSE を返します。
file_get_contents()はファイルの内容を文字列に読み込む 方法として好ましいものです。もしOSがサポートしていれば パフォーマンス向上のためにメモリマッピング技術が使用されます。
注意:
空白のような特殊な文字を有する URI をオープンする場合には、 urlencode() でその URI をエンコードする必要があります。
パラメータ
-
filename -
データを読み込みたいファイルの名前。
-
use_include_path -
注意:
PHP 5 以降では、
FILE_USE_INCLUDE_PATHを使用して インクルードパス から探すことができます。 -
context -
stream_context_create() で作成したコンテキストリソース。 独自のコンテキストを使用する必要がない場合は、このパラメータに
NULLを指定します。 -
offset -
元のストリーム上で、読み込みを開始するオフセット位置。
リモートファイルに対するシーク (
offset指定) はサポートしていません。 オフセットが小さい場合はリモートファイルでのシークがうまくいくこともありますが、 これはバッファリングされたストリーム上で動作しているだけのことです。 -
maxlen -
読み込むデータの最大バイト数。 デフォルトは、ファイル終端に達するまで読み込みます。 このパラメータは、フィルタが処理した後のストリームに適用されることに注意しましょう。
返り値
読み込んだデータを返します。失敗した場合に FALSE を返します。
エラー / 例外
maxlength
がゼロより小さい場合、あるいは、ストリーム内での指定した offset へのシークが失敗した場合に
E_WARNING レベルのエラーが発生します。
例
例1 とあるウェブサイトのホームページのソースの取得と出力
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
例2 include_path の検索
<?php
// <= PHP 5
$file = file_get_contents('./people.txt', true);
// > PHP 5
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>
例3 ファイルの一部の読み込み
<?php
// 21 文字目から 14 文字ぶん読み込みます
$section = file_get_contents('./people.txt', NULL, NULL, 20, 14);
var_dump($section);
?>
上の例の出力は、 たとえば以下のようになります。
string(14) "lle Bjori Ro"
例4 ストリームコンテキストの使用
<?php
// ストリームを作成します
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// 上で設定した HTTP ヘッダを使用してファイルをオープンします
$file = file_get_contents('http://www.example.com/', false, $context);
?>
変更履歴
| バージョン | 説明 |
|---|---|
| 5.1.0 |
offset と
maxlen パラメータが追加されました。
|
| 5.0.0 | コンテキストサポートが追加されました。 |
注意
注意: この関数はバイナリデータに対応しています。
fopen wrappers が有効の場合、この関数のファイル名として URL を使用することができます。ファイル名の指定方法に関する詳細は fopen() を参照ください。 サポートするプロトコル/ラッパー には、さまざまなラッパーの機能やその使用法、 提供される定義済み変数などの情報がまとめられています。
IIS のような、いくつかの標準に 対応してない Web サーバーは、PHP に警告を発生させるような手順でデータを送信します。 このようなサーバーを使用する場合は、 error_reporting を警告を発生しないレベルまで小さくする必要があります。 PHP 4.3.7 以降では、https:// ラッパーでストリームをオープンする際に バグがある IIS サーバーソフトウエアを検出することができ、この警告を抑制することができます。 あなたが ssl:// ソケットを作成するために fsockopen() を使用している場合、 自らこの警告を検出し、抑制する必要があります。
参考
- file() - ファイル全体を読み込んで配列に格納する
- fgets() - ファイルポインタから 1 行取得する
- fread() - バイナリセーフなファイルの読み込み
- readfile() - ファイルを出力する
- file_put_contents() - 文字列をファイルに書き込む
- stream_get_contents() - 残りのストリームを文字列に読み込む
- stream_context_create() - ストリームコンテキストを作成する
- $http_response_header