Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
file_get_contents() / file_put_contents()対応: PHP 4(2000)
ファイルの内容を一括で読み書きします。テキストファイルの読み込みやデータの書き出しを、ストリーム操作なしで簡潔に行えます。
構文
// ファイル全体を文字列として読み込みます。 file_get_contents($filename, $use_include_path, $context, $offset, $length); // 文字列をファイルに書き込みます。 file_put_contents($filename, $data, $flags, $context); // ファイル全体を行ごとの配列として読み込みます。 file($filename, $flags, $context);
関数一覧
| 関数 | 概要 |
|---|---|
| file_get_contents($filename) | ファイルの内容を文字列として一括で読み込みます。URLを指定すればHTTPリクエストとしても使えます。失敗時は『false』を返します。 |
| file_put_contents($filename, $data) | 文字列をファイルに書き込みます。ファイルが存在しなければ新規作成、存在すれば上書きします。第3引数に『FILE_APPEND』を指定すると追記になります。 |
| file($filename, $flags) | ファイルの内容を行ごとに配列として返します。各要素に改行文字が含まれるため、『FILE_IGNORE_NEW_LINES』フラグで除去できます。 |
戻り値
『file_get_contents()』はファイル内容の文字列を、失敗時は『false』を返します。『file_put_contents()』は書き込んだバイト数を、失敗時は『false』を返します。『file()』は行ごとの配列を返します。
サンプルコード
<?php
// ファイル全体を文字列として読み込みます。
$content = file_get_contents("/var/www/html/data.txt");
echo $content; // ファイルの内容がそのまま出力されます。
// 読み込み失敗時のエラーハンドリング
$content = file_get_contents("/var/www/html/not_found.txt");
if ($content === false) {
echo "ファイルの読み込みに失敗しました。";
}
// JSONファイルを読み込んで連想配列に変換します。
$json = file_get_contents("/var/www/html/config.json");
$config = json_decode($json, true);
echo $config["site_name"]; // JSONのキーに対応する値が出力されます。
// 文字列をファイルに書き込みます。
$data = "ログエントリ: " . date("Y-m-d H:i:s");
file_put_contents("/var/www/html/log.txt", $data);
// FILE_APPEND フラグで追記します。
$log = date("Y-m-d H:i:s") . " アクセスがありました。\n";
file_put_contents("/var/www/html/access.log", $log, FILE_APPEND);
// LOCK_EX フラグで排他ロックをかけて書き込みます。
file_put_contents("/var/www/html/counter.txt", "100", LOCK_EX);
// FILE_APPEND と LOCK_EX を同時に使用します。
file_put_contents("/var/www/html/access.log", $log, FILE_APPEND | LOCK_EX);
// file() で行ごとの配列として読み込みます。
$lines = file("/var/www/html/data.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
echo $line . "\n"; // 空行を除いた各行が出力されます。
}
// file() でCSVデータを処理する実用例
$lines = file("/var/www/html/users.csv", FILE_IGNORE_NEW_LINES);
foreach ($lines as $line) {
$columns = explode(",", $line);
echo $columns[0] . ": " . $columns[1] . "\n"; // 各行の1列目と2列目が出力されます。
}
概要
『file_get_contents()』と『file_put_contents()』は、ファイルのオープン・読み書き・クローズを1回の関数呼び出しで行える便利な関数です。『fopen() / fread() / fclose()』によるストリーム操作に比べてコードが簡潔になるため、ファイル全体を一括で扱う場面で最もよく使われます。
『file_put_contents()』はデフォルトでファイルの内容を上書きします。追記したい場合は第3引数に『FILE_APPEND』を指定してください。複数プロセスから同時に書き込む可能性がある場合は『LOCK_EX』で排他ロックをかけることで、データの破損を防げます。
『file_get_contents()』はURLを指定してHTTPリクエストを送ることも可能ですが、APIアクセスなどでヘッダーやタイムアウトの細かい制御が必要な場合は cURL の使用を検討してください。ファイルの存在確認には『file_exists()』を使用します。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。