フリーPHPスクリプト配布サイト。
PHPではデータの保存にデータベースがよく利用されますが、もちろんテキストファイルにデータを書き込むことも可能です。ファイルを扱う命令はいくつも実装されているのですが、一例を紹介します。
ファイルを扱うには fopen
関数でファイルを開きます。引数に「開きたいファイル」と「モード」をそれぞれ指定します。ファイルを開くとファイルポインタと呼ばれる識別文字が返され、以降はこのファイルポインタを利用してファイルを扱います。
また、開いたファイルは fclose
関数で閉じておきます。
$fp = fopen("開きたいファイル", "モード");
fclose($fp);
ファイルを読み書きする具体的な方法は、以下で紹介します。
fopen
関数のモードに r
を指定すると、読み込みモードでファイルを開きます。
読み込みモードでファイルを開くと、fgets
関数でファイルの内容を1行ずつ読み出すことができます。具体的には以下のようなプログラムになります。
<?php
$fp = fopen("sample.txt", "r");
while ($line = fgets($fp)) {
echo "$line<br />";
}
fclose($fp);
?>
これを実行すると、sample.txt
の内容が改行区切りですべて表示されます。sample.txt
はあらかじめ作成しておき、適当な内容を記載しておきます。
$line = fgets($fp)
によってファイルの内容を1行読み出すことができ、これを繰り返し条件としています。つまり、ファイルの末尾に達するまで echo
で内容を表示し続けます。
fopen
関数のモードに w
を指定すると、書き込みモードでファイルを開きます。
書き込みモードでファイルを開くと、fwrite
関数でファイルの内容を書き換えることができます。具体的には以下のようなプログラムになります。
<?php
$fp = fopen("sample.txt", "w");
fwrite($fp, "ファイルへの書き込みサンプル");
fclose($fp);
?>
これを実行すると、sample.txt
の内容が ファイルへの書き込みサンプル
になります。sample.txt
はあらかじめ作成しておき、書き込み権限を与えておきます。
なお、改行文字を書き込みたければ \n
を書き込みます。文字の表示と同様に、\n
と書いた箇所でテキストが改行されます。
fopen
関数のモードに a
を指定すると、追記モードでファイルを開きます。
追記モードでファイルを開くと、fwrite
関数でファイルの内容に追記することができます。具体的には以下のようなプログラムになります。
<?php
$fp = fopen("sample.txt", "a");
fwrite($fp, "ファイルへの追記サンプル");
fclose($fp);
?>
これを実行すると、sample.txt
の内容に ファイルへの追記サンプル
が追加されます。sample.txt
はあらかじめ作成しておき、書き込み権限を与えておきます。
書き込みモードとは異なり、プログラムが実行されるたびにファイルの末尾に追記が行われます。
これまでに紹介したように、fopen
関数や fclose
関数を使用すればファイルを読み書きすることができます。ですがPHPには、より簡単にファイルの内容を扱える関数が用意されています。
少し処理の自由度は下がるものの、これらを利用すればより短いコードでファイルを扱うことができます。
ファイルの内容を表示する場合、file_get_contents
関数を使用すれば以下のように書くことができます。
<?php
echo file_get_contents("sample.txt");
?>
これを実行すると、sample.txt
の内容がすべて表示されます。
一度に表示するので、fopen
関数、fgets
関数、fclose
関数を使用したときのように「各行末に <br />
を付加して順に表示する」のような処理はできませんが、単純にファイルの内容を表示したい場合は、この関数が便利です。
また、以下のように書けば、直接表示せずに変数に読み込むこともできます。
<?php
$data = file_get_contents("sample.txt");
?>
ファイルに書き込む場合、file_put_contents
関数を使用すれば以下のように書くことができます。
<?php
file_put_contents("sample.txt", "ファイルへの書き込みサンプル");
?>
これを実行すると、sample.txt
の内容が ファイルへの書き込みサンプル
になります。
ファイルの内容全体を書き換えるので、fopen
関数、fwrite
関数、fclose
関数を使用したときのように「ファイルの末尾にデータを追加する」のような処理はできませんが、単純にファイルの内容全体を書き換えたい場合は、この関数が便利です。