PHP - BASIC - 11. PHPのファイルシステムを扱う関数 - 2. file_put_contents関数

file_put_contents 関数は文字列をファイルに書き込む関数です。テキストエディタを開いて次のプログラム( fs1.php )を作成してみましょう。

<?php
$str = "Hello World" . PHP_EOL;
$file = "hello.txt";
file_put_contents($file, $str);

file_put_contents 関数は引数を2つ指定します。

  • 第1引数
    • ファイル名
  • 第2引数
    • ファイルに書き込む文字列

さきほどのプログラムの場合は file_put_contents 関数の第1引数に $file 、第2引数に $str を指定しています。この場合、 file_put_contents 関数は変数 $str の内容を $file で指定されたファイルに書き込みます。

file_put_contents 関数は戻り値に書き込んだデータのバイト数を返却します。しかし、ここでは戻り値を変数に代入していません。このように関数によって返却される戻り値は必要なければ無視することもできます。

それでは作成したプログラムを実行してみましょう。ターミナルから次のように実行します。

$ php fs1.php

プログラムを実行しても上記のように実行してもターミナル上には何も表示されないでしょう。その代わりカレントディレクトリ上に ”hello.txt” という名前のファイルが作成されているのがわかるでしょう。またテキストエディタで hello.txt ファイルを開くと次のような内容を確認できるでしょう。

Hello World

以上のように fs1.php を実行したことによって、カレントディレクトリ上に hello.txt というファイルが作成されており、 hello.txt ファイルには Hello World と書き込まれているのがわかります。

上書きモードと追記モード

file_put_contents 関数はデフォルトで上書きモードでファイルに書き込みを行います。さきほどのプログラム( fs1.php )を次のように修正してみましょう。

<?php
$str = "Hello PHP" . PHP_EOL; 
$file = "hello.txt"; 
file_put_contents($file, $str); 

ファイルに書き込む内容を "Hello World" から "Hello PHP" に変更しています。再度プログラムを実行してみましょう。

$ php fs1.php

それから hello.txt ファイルの内容をテキストエディタで表示してみましょう。

Hello PHP

hello.txt の内容は上書きされて Hello PHP に置き換わっているのがわかります。もし上書きするのではなく、ファイルの末尾にデータを追記するのであれば file_put_contents 関数の第3引数に定数 FILE_APPEND を指定します。さきほどのプログラム( fs1.php )を次のように修正してみましょう。

<?php
$str = "Hello Programming" . PHP_EOL; 
$file = "hello.txt"; 
file_put_contents($file, $str, FILE_APPEND); 

再度プログラムを実行してみましょう。

$ php fs1.php

それから hello.txt ファイルの内容をテキストエディタで表示してみましょう。

Hello PHP
Hello Programming

hello.txt ファイルの結果を見ると、追記モードでファイルに書き込みを行っている様子がわかります。

まとめ

  • file_put_contents - 文字列をファイルに書き込む
  • 引数
    1. ファイル名
    2. ファイルに書き込む文字列
    3. フラグ (省略可能)
      • FILE_APPEND定数を指定すると追記モード
  • 戻り値
    • ファイルに書き込まれたバイト数
    • ただし、書き込みに失敗した場合は false