【PHP】ファイル操作


ファイルの基本的な操作についての覚書。

ファイル作成・書き込み

ファイルの作成・書き込みにはfile_put_contentsを使います。

file_put_contents("./news.txt","aaa");

第1引数にはファイルを配置する場所(ファイルパス)を指定し、第2引数には書き込む内容を指定します。

実行すると自動的にnews.txtが作成されaaaが書き込まれているのが確認できます。

file_put_contentsは処理に失敗すると「false」が返ってくるので、if構文で下記のようにすることもできます。

$success = file_put_contents("./news.txt","aaa");

if($success) {
    echo "書き込み成功";
}else{
    echo "書き込み失敗";
}

今回は自分のパソコン内で試しているのでドキュメントルートにnews.txtを保存しましたが、外部サーバーを使う場合には注意しなければなりません。

以下のアドレスを叩くとnews.txtの中身が丸見えです。
http://ドメイン名/news.txt

ドキュメントルートに保存したファイルはWebブラウザで閲覧できてしまうので、通常ファイルはドキュメントルートの外に保存します。

file_put_contents("./news.txt","aaa")

//↓ドキュメントルート外に保存

file_put_contents("../test/news.txt","aaa")

ファイル読み込み

ファイルを読み込むときはfile_get_contentsを使います。
先ほど作成したファイルを読み込んでみます。

$data = file_get_contents("../test/news.txt");
echo $data;

実行すると、先ほど書き込んだ「aaa」が表示されることを確認できます。

ファイル読み込みと表示を同時に行う

ファイルを読み込んで画面にそのまま表示するとき、先ほどのように読み込み→表示とステップを踏むのもいいですが、それを一度に行える関数が用意されており、下記のように書き換えることができます。

$data = file_get_contents("../test/news.txt");
echo $data;

//↓ readfileで一気に行う

readfile("../test/news.txt");

ファイルに追記

既存のファイルに追記する場合、下記のようにします。

$data = file_get_contents("../test/news.txt");
$data .= "<br>bbb";

file_put_contents("../test/news.txt",$data);

readfile("../test/news.txt");

まずファイルを読み込んで、「.=」で内容を付けたしました。
「.=」は文字列連結を省略した書き方で、次の書き方と同義です。

$data = $doc . "<br>bbb";

そしてfile_put_contentsで上書き保存をします。
実行した結果、下記のように表示されることが確認できます。

aaa
bbb