file_put_contents
データをファイルに書き込む
説明
intfalse file_put_contents(
string $filename
,
mixed $data
,
int $flags
= 0,
resourcenull $context
= null
)
filename
が存在しない場合はファイルを作成します。
存在する場合はそのファイルを上書きします。ただし
FILE_APPEND
フラグが設定されている場合は別です。
パラメータ
-
filename
-
データを書き込むファイルへのパス。
-
data
-
書き込むデータ。文字列, 配列
もしくは ストリーム リソースのいずれかを指定可能です。
data
が ストリーム リソースの場合は、
ストリームのバッファに残っている内容が指定したファイルにコピーされます。
これは、stream_copy_to_stream の挙動と似ています。
data
に一次元の配列を指定することもできます。この場合は
file_put_contents($filename, implode('', $array))
と同じ意味になります。
-
flags
-
flags
の値は、以下のフラグを組み合わせたものとなります
組み合わせる際には、論理 OR
(|
) 演算子で連結します。
使用できるフラグ
フラグ |
説明 |
FILE_USE_INCLUDE_PATH
|
filename をインクルードディレクトリから探します。
詳細な情報は include_path を参照ください。
|
FILE_APPEND
|
filename がすでに存在する場合に、
データをファイルに上書きするするのではなく追記します。
|
LOCK_EX
|
書き込み処理中に、ファイルに対する排他ロックを確保します。
つまり、fopen の呼び出しから
fwrite の呼び出しまでの間に
flock の呼び出しが発生するということです。
これは、モード "x" で
fopen を呼び出すことと同等ではありません。
|
-
context
-
stream_context_create
で作成したコンテキストリソース。
戻り値
この関数はファイルに書き込まれたバイト数を返します。
あるいは失敗した場合には false
を返します。
警告この関数は論理値
false
を返す可能性がありますが、false
として評価される値を返す可能性もあります。
詳細については 論理値の
セクションを参照してください。この関数の返り値を調べるには
===演算子 を
使用してください。
例
例1 シンプルな使用例
<?php
$file = 'people.txt';
// ファイルをオープンして既存のコンテンツを取得します
$current = file_get_contents($file);
// 新しい人物をファイルに追加します
$current .= "John Smith\n";
// 結果をファイルに書き出します
file_put_contents($file, $current);
?>
例2 フラグの使用
<?php
$file = 'people.txt';
// 新しい人物をファイルに追加します
$person = "John Smith\n";
// 中身をファイルに書き出します。
// FILE_APPEND フラグはファイルの最後に追記することを表し、
// LOCK_EX フラグは他の人が同時にファイルに書き込めないことを表します。
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
?>
注意
注意: この関数はバイナリデータに対応しています。
ヒントfopen wrappers が有効の場合、この関数のファイル名として
URL を使用することができます。ファイル名の指定方法に関する詳細は
fopen を参照ください。
サポートするプロトコル/ラッパー には、さまざまなラッパーの機能やその使用法、
提供される定義済み変数などの情報がまとめられています。
参考
- fopen
- fwrite
- file_get_contents
- stream_context_create