PHPのfile_put_contents()関数とは?使い方・パラメータ・戻り値を徹底解説
file_put_contents()関数は、指定した文字列をファイルに書き込むためのPHP組み込み関数です。この関数は、ファイルに書き込まれたバイト数を返し、処理が失敗した場合はFALSEを返します。
構文
file_put_contents(file_path, data, flags, context)
パラメータ
file_path − 書き込み対象となるファイルのパスを指定します。
data − ファイルに書き込むデータを設定します。文字列のほか、配列やストリームリソースも指定できます。
flags − ファイルの開き方やデータの書き込み方法を指定するオプションです。
FILE_USE_INCLUDE_PATH − include_path に設定されたディレクトリ内からファイル名を検索します。
FILE_APPEND − ファイルがすでに存在する場合、内容を上書きせずにデータを末尾へ追記します。
LOCK_EX − 書き込み処理の間、ファイルに対して排他ロックを取得します。
FILE_TEXT − データをテキストモードで書き込みます。FILE_BINARYとの併用はできません。※PHP 6以降でのみ使用可能です。
FILE_BINARY − データをバイナリモードで書き込みます。これがデフォルトの動作であり、FILE_TEXTとの併用はできません。※PHP 6以降でのみ使用可能です。
context − ストリームの動作を制御するコンテキストを設定します。
戻り値
file_put_contents()関数は、ファイルに正常に書き込まれたバイト数を整数で返します。書き込みに失敗した場合はFALSEを返します。
使用例
次の例では、文字列「This is it!」を new.txt というファイルに書き込んでいます。
<?php
echo file_put_contents("new.txt", "This is it!");
?>
出力
11
「This is it!」は11文字(11バイト)であるため、書き込まれたバイト数である「11」が出力されます。
続いて、別の例を見てみましょう。
使用例:既存ファイルへの追記
既存ファイルの内容を読み込み、新しい行を追記してから保存する例です。
<?php $file_path = 'one.txt'; $myfile = file_get_contents($file_path); // 追記 $myfile .= "Demo line!\n"; file_put_contents($file_path, $myfile); ?>
出力
10
実装時のポイント
- 既存ファイルに追記したい場合は、第3引数に
FILE_APPENDを指定すると、わざわざ内容を読み出さなくても簡単に追記できます。 - 複数のプロセスから同時に同じファイルへ書き込む可能性がある場合は、
LOCK_EXを組み合わせることで書き込み競合を防止できます。 - 戻り値がFALSEでないか必ずチェックし、書き込み失敗時のエラーハンドリングを行うことをおすすめします。
-
PHPのfile_get_contents()関数とは?使い方とパラメータを徹底解説
PHPのfile_get_contents()関数は、ファイル全体を読み込んで1つの文字列として返す関数です。似た関数であるfile()関数がファイル全体を配列として読み込むのに対し、file_get_contents()関数はファイル全体を単一の文字列として取得できる点が大きな特徴です。基本構文file_get_contents(file_path, flags, context, start_offset, max_length)パラメータの詳細file_path: 読み込み対象となるファイルへのパスを指定します。flags: 以下のフラグをバイナリOR演算子(|)で組み合わせて指定できま
-
PHPのfile()関数とは?使い方・パラメータ・戻り値をわかりやすく解説
PHPのfile()関数は、指定したファイル全体を読み込み、その内容を行ごとに分割した配列として返す関数です。テキストファイルを簡単に扱いたい場合に便利な基本関数の一つです。構文file(file_path, flag, context)パラメータfile_path − 読み込みたいファイルへのパスを指定します。flag − 省略可能なパラメータで、以下の定数を1つ、または複数組み合わせて指定できます。FILE_USE_INCLUDE_PATH − include_path の中からファイルを検索します。FILE_IGNORE_NEW_LINES − 配列の各要素の末尾に改行文字を追加しません