PHPでファイルに文字列を書き込む「file_put_contents()」

2021-07-08

文字列をファイルに書き込む方法:file_put_contents()

PHPでファイルに文字列を書き込むには「file_put_contents()」の関数で書き込みできます。
ファイルに書き込むには、ファイルを開く関数「fopen()」、ファイルに書き込み関数「fwrite()」、ファイルを閉じる関数「 fclose()」 を使わずにこの関数だけで処理ができるので簡単です

書式 : file_put_contents(ファイル名, 書き込みするデータ [, オプションフラグ [, コンテキスト]])

オプションフラグ

file_put_contents()には3つオプションがあります。また、複数のオプションを使う場合は「|」演算子を使ってオプションを設定します

  • FILE_USE_INCLUDE_PATH : ファイルをインクルードパスから参照します。
  • FILE_APPEND : ファイルに追記します。
  • LOCK_EX : 書き込み中にファイルをロックします。

返り値

ファイルに書き込むまれたバイト数をint型で返します。 書き込みに失敗した場合には、falseを返します。

ファイルに書き込み

指定した文字列「ファイル書き込みテスト」を「test.txt」ファイルに書き込むサンプルです。

<?php
$file = "test.txt";
$string = "ファイル書き込みテスト\n";
file_put_contents($file, $string);
?>

ファイルに追記

上記でも使用した文字列を「test.txt」に追記で書き込むサンプルです。ファイルに追記を行う場合は「FILE_APPEND」のオプションを使用します

<?php
$file = "test.txt";
$string = "ファイル書き込みテスト\n";
file_put_contents($file, $string, FILE_APPEND);
?>

// 文字列の追記を行う前
$ cat test.txt
Hello World!

// 文字列の追記を行う後
$ cat test.txt
Hello World!
ファイル書き込みテスト

ファイルを排他的ロックして、追記する

ファイルを排他的ロックして、他のユーザーから書き込みをできない状態で、指定した文字列を追記します。その場合は「FILE_APPEND | LOCK_EX」のオプションを使用します。オプションを2個しようするので「|」を使用して2つのオプションを設定します

<?php
$file = "test.txt";
$string = "ファイル書き込みテスト\n";
file_put_contents($file, $string, FILE_APPEND | LOCK_EX);
?>

返り値を利用して、ファイルの書込み成功・失敗を判断する

file_put_contentsの返り値では、ファイルに書き込むまれたバイト数をint型で返すので、ファイルに書き込んだバイト数が「0」なら失敗と判断して、「0」でなけらば成功として判断する事ができます

<?php
$file = "test.txt";
$string = "ファイル書き込みテスト\n";
$result = file_put_contents($file, $string, FILE_APPEND | LOCK_EX);
echo $result;
?>

// 実行結果
34

// 34バイトの文字列が書き込まれと返ってくるので、それで成功失敗の判断をします
<?php
$file = "test.txt";
$string = "ファイル書き込みテスト\n";
$result = file_put_contents($file, $string, FILE_APPEND | LOCK_EX);

if ( $result === 0 ) {
    echo "書き込み失敗\n";
} else {
    echo "書き込み成功:" . $result . " Byteの文字列の書込みをおこないました\n";
}
?>

 

プログラミングphp

Posted by admin