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”というファイルが生成されているのがわかるでしょう。

ターミナルでlsコマンドやcatコマンドで確認してみましょう。

$ ls hello.txt
hello.txt
$ cat hello.txt
Hello World

lsコマンドはカレントディレクトリに存在するファイルやディレクトリを表示するコマンドです。catコマンドはファイルの中身を出力するコマンドです。Windowsの場合はコマンドプロンプト上でdirコマンドやtypeコマンドを使います。

上記の実行結果からカレントディレクトリ上に"hello.txt"というファイルが作成されており、hello.txtの中にはHello Worldと書き込まれているのがわかります。

hello.txtファイルはエディタで開いて確認しても構いません。

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

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

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

ファイルに書き込む内容を"Hello World"から"Hello PHP"に変更しています。

再度プログラムを実行してファイルの内容をcatコマンドで表示してみましょう。

$ php fs1.php
$ cat 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);

再度プログラムを実行してファイルの内容をcatコマンドで表示してみましょう。

$ php fs1.php
$ cat hello.txt
Hello PHP
Hello Programming

実行結果から追記モードでファイルに書き込みを行っている様子がわかります。


前へ | 次へ