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