file_put_contents
(PHP 5, PHP 7)
file_put_contents — データをファイルに書き込む
説明
$filename
, mixed $data
[, int $flags = 0
[, resource $context
]] ) : intこの関数は、fopen()、fwrite()、 fclose() を続けてコールしてデータをファイルに書き込むのと等価です。
filename が存在しない場合はファイルを作成します。
存在する場合はそのファイルを上書きします。ただし
FILE_APPEND フラグが設定されている場合は別です。
パラメータ
-
filename -
データを書き込むファイルへのパス。
-
data -
書き込むデータ。文字列, 配列 もしくは ストリーム リソースのいずれかを指定可能です。
dataが ストリーム リソースの場合は、 ストリームのバッファに残っている内容が指定したファイルにコピーされます。 これは、stream_copy_to_stream() の挙動と似ています。dataに一次元の配列を指定することもできます。この場合は file_put_contents($filename, implode('', $array)) と同じ意味になります。 -
flags -
flagsの値は、以下のフラグを組み合わせたものとなります 組み合わせる際には、論理 OR (|) 演算子で連結します。使用できるフラグ フラグ 説明 FILE_USE_INCLUDE_PATHfilenameをインクルードディレクトリから探します。 詳細な情報は include_path を参照ください。FILE_APPENDfilenameがすでに存在する場合に、 データをファイルに上書きするするのではなく追記します。LOCK_EX書き込み処理中に、ファイルに対する排他ロックを確保します。 つまり、fopen() の呼び出しから fwrite() の呼び出しまでの間に flock() の呼び出しが発生するということです。 これは、モード "x" で fopen() を呼び出すことと同等ではありません。 -
context -
stream_context_create() で作成したコンテキストリソース。
返り値
この関数はファイルに書き込まれたバイト数を返します。
あるいは失敗した場合には 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);
?>
変更履歴
| バージョン | 説明 |
|---|---|
| 5.1.0 |
LOCK_EX のサポートが追加され、
data
パラメータにストリームリソースを指定することが可能になりました。
|
注意
注意: この関数はバイナリデータに対応しています。
fopen wrappers が有効の場合、この関数のファイル名として URL を使用することができます。ファイル名の指定方法に関する詳細は fopen() を参照ください。 サポートするプロトコル/ラッパー には、さまざまなラッパーの機能やその使用法、 提供される定義済み変数などの情報がまとめられています。
参考
- fopen() - ファイルまたは URL をオープンする
- fwrite() - バイナリセーフなファイル書き込み処理
- file_get_contents() - ファイルの内容を全て文字列に読み込む
- stream_context_create() - ストリームコンテキストを作成する