ファイルシステム 関数
PHP Manual

file_put_contents

(PHP 5)

file_put_contents文字列をファイルに書き込む

説明

int file_put_contents ( string $filename , mixed $data [, int $flags= 0 [, resource $context ]] )

この関数は、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_PATH filename をインクルードディレクトリから探します。 詳細な情報は include_path を参照ください。
FILE_APPEND filename がすでに存在する場合に、 データをファイルに上書きするするのではなく追記します。
LOCK_EX 書き込み処理中に、ファイルに対する排他ロックを確保します。
FILE_TEXT data をテキストモードで書き込みます。 unicode が有効な場合、デフォルトのエンコーディングは UTF-8 です。 別のエンコーディングを指定するには、 独自のコンテキストを作成するか、あるいは stream_default_encoding() でデフォルトを変更します。 このフラグは FILE_BINARY と同時に使用することはできません。 このフラグは PHP 6 以降でのみ使用可能です。
FILE_BINARY data をバイナリモードで書き込みます。これはデフォルトの設定で、 FILE_TEXT と同時に使用することはできません。 このフラグは PHP 6 以降でのみ使用可能です。

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 flag フラグで他の人が同時書き込みすることを防ぎます
file_put_contents($file$personFILE_APPEND LOCK_EX);
?>

例3 ストリームコンテキストの使用

<?php
// ストリームを作成します
$opts = array(
  
'http'=>array(
    
'method'=>"GET",
    
'header'=>"Accept-language: en\r\n" .
              
"Cookie: foo=bar\r\n"
  
)
);

$context stream_context_create($opts);

$person "John Smith\n";

// 上で設定した HTTP ヘッダを使用してファイルにコンテンツを追加します
file_put_contents('people.txt'$personNULL$context);
?>

変更履歴

バージョン 説明
5.0.0 コンテキストがサポートされるようになりました。
5.1.0 LOCK_EX のサポートが追加され、 data パラメータにストリームリソースを指定することが可能になりました。
6.0.0 FILE_TEXT および FILE_BINARY がサポートされるようになりました。

注意

注意: この関数はバイナリデータに対応しています。

ヒント

fopen wrappers が有効の場合、この関数のファイル名として URL を使用することができます。ファイル名の指定方法に関する詳細は fopen()、サポートされる URL プロトコルの種類 については、(例えば)サポートされるプロトコル/ラッパー を参照してください。

参考


ファイルシステム 関数
PHP Manual
アダルトレンタルサーバー