【PHP5】ファイル入出力

ファイル入出力

PHPでも、テキストファイル等を使ってデータを読み書きすることができます。

fopen関数

引数に「ファイル名」と「モード」を指定します。
ファイルのオープンに成功すると戻り値としてファイルポインタが返されます。
ファイルポインタを利用してファイル操作を行います。

また、オープンしたファイルは処理が終わったら fclose 関数で必ず閉じます。

$fp = fopen("ファイル名", "モード");
fclose($fp);

指定できるモードは、以下のとおりです。

モード説明
'r’読み込み専用でオープンします。
ファイルポインタをファイルの先頭に置きます。
'r+’読み書き込み用でオープンします。
ファイルポインタをファイルの先頭に置きます。
'w’書き込み専用でオープンします。
ファイルポインタをファイルの先頭に置きます。
また、ファイルサイズをゼロにします。
ファイルが存在しない場合には、 作成を試みます。
'w+’読み書き込み用でオープンします。
ファイルポインタをファイルの先頭に置きます。
ファイルサイズをゼロにします。
ファイルが存在しない場合には、作成を試みます。
'a’追加書き込み専用でオープンします。
ファイルポインタをファイルの終端に置きます。
ファイルが存在しない場合には、作成を試みます。
'a+’読み込みと追加書き込み用でオープンします。
ファイルポインタをファイルの終端に置きます。
ファイルが存在しない場合には、作成を試みます。
'x’書き込み専用でオープンします。
ファイルポインタをファイルの先頭に置きます。
ファイルが既に存在する場合には、オープンは失敗し、エラーを発行します。
ファイルが存在しない場合には新規作成を試みます。
ローカルファイルに対してのみ有効です。
'x+’読み書き込み用でオープンします。
それ以外のふるまいは 'x’ と同じです。
'c’書き込み専用でオープンします。
ファイルが存在しない場合には新規作成を試みます。
ファイルが既に存在する場合でも切り詰めたりせず、 関数のコールが失敗することもありません。
ファイルポインタをファイルの先頭に置きます。アドバイザリ・ロックを確保してからファイルを変更したい場合に便利です。
'c+’読み書き込み用でオープンします。 それ以外のふるまいは 'c’ と同じです。

ファイルの読み込み

fopen 関数のモードに r を指定すると読み込みモードでファイルをオープンします。
ファイルをオープンできたら、fgets 関数でファイルの内容を読み込むことができます。
なお、fgets 関数は、ファイルの内容を1行ずつ読み込みます。

$fp = fopen("sample.txt", "r");
while ($line = fgets($fp)) {
  echo "$line
";
}
fclose($fp);

fgets 関数は、ファイルポインタから読み込むデータがもうない場合は FALSE を返します。

ファイルへの書き込み

fopen 関数のモードに w を指定すると書き込みモードでファイルをオープンします。
ファイルをオープンできたら、fwrite 関数でファイルの内容を書き換えることができます。

$fp = fopen("sample.txt", "w");
fwrite($fp, "書き込みテスト");
fclose($fp);

改行文字を書き込みたい時には \n を書き込みます。
文字の表示と同様に、\n と書いた箇所でテキストが改行されます。

ファイルへの追加書き込み

fopen 関数のモードに a を指定すると追記モードでファイルをオープンします。
ファイルをオープンできたら、fwrite 関数でファイルの内容に追記することができます。

$fp = fopen("sample.txt", "a");
fwrite($fp, "追記テスト");
fclose($fp);

書き込みモードとは異なり、プログラムを実行するたびにファイルの末尾に追記されます。

簡易ファイル操作

通常は、fopen 関数と fclose 関数を使用してファイルの読み書きを行いますが、
PHP には、簡単にファイル操作ができる関数が実装されています。

file_get_contents と file_put_contents です。

file_get_contents

ファイルの内容を表示したい時には、file_get_contents 関数を使用します。
ただし、fgets 関数のように1行ずつ読み込むことはできません。
ファイルの内容を編集する必要もなくて、ただ単に表示したい場合には便利です。

file_put_contents

データをファイルに書き込みたい時には、file_put_contents 関数を使用します。
ただし、ファイルの内容全体を書き換えるので、fwrite 関数のように追加書き込みなどができません。
ファイルの内容全体を書き換えたい時には、便利です。

PHP入門

Posted by 管理人