関数 file_put_contents

関数 file_put_contents はデータをファイルに書き込みます。最初のパラメータはファイルへのパス、 2番目は書き込むデータです。3番目のオプションパラメータは書き込みモードを指定します(下記の表を参照)。

4番目のオプションパラメータは、関数 stream_context_create によって作成されるストリームコンテキストリソースです。 ファイルやネットワークリソースとの操作パラメータを設定することができます。

構文

phpfile_put_contents(
  string $filename,
  mixed $data,
  int $flags = 0,
  ?resource $context = null
): int|false

3番目のパラメータの値

フラグ 説明
FILE_USE_INCLUDE_PATH 設定されている場合、関数は PHPの設定ファイル php.ini の include_path ディレクティブで指定されたディレクトリ内でファイルを検索します。
FILE_APPEND ファイルを上書きするのではなく、末尾にデータを追加する
LOCK_EX 書き込み中にファイルの排他ロックを取得する

例

文字列をファイルに書き込んでみましょう:

php<?php
  $res = file_put_contents('data.txt', 'abcde');
  echo $res;
?>

コードの実行結果は 書き込まれたバイト数を返します:

php5

例

ファイルの末尾にデータを追加してみましょう:

php<?php
  $res = file_put_contents('data.txt', '12345', FILE_APPEND);
  echo $res;
?>

例

配列をファイルに書き込む:

php<?php
  $data = ['a', 'b', 'c'];
  $res = file_put_contents('array.txt', implode(',', $data));
  echo $res;
?>

例

3番目のパラメータでは、複数の フラグを | 記号で区切って指定できます。 例として、ファイルをロックしながらデータを追加します:

php<?php
  $res = file_put_contents(
    'log.txt',
    "text",
    FILE_APPEND | LOCK_EX
  );
  echo $res;
?>

例

コンテキストの使用:

php<?php
  $opts = [
    'http' => [
      'method' => "POST",
      'header' => "Content-type: text/plain\r\n"
    ]
  ];
  
  $context = stream_context_create($opts);
  
  $res = file_put_contents(
    'http://example.com/api',
    'data=test',
    false,
    $context
  );
?>

関連項目

  • 関数 file_get_contents,
    ファイルの内容を読み取る関数
  • 関数 fopen,
    ファイルを開く関数
  • 関数 fwrite,
    ファイルに書き込む関数