ファイルを開く
- fopen()関数は、ファイルを開くときに使われる関数です。データを読み取るときに開くのか、書き込むために開くのか、両方で使うのかを指定します。
- ファイルへの書き込みには「上書き」と「追加」があります。fopen()関数の場合、開くときに、w や w+ を指定するとポインタが先頭に置かれ、既存データは上書きされます。a や a+ を指定すると、ファイルポインタは終端に置かれ、最終行に続けて書き込むことができます。
- ファイルにデータを書き込むには、fputs()関数やfwrite()関数を使います。
- fopen()関数は、書き込みモードで開くとき、指定したファイルが存在しない場合は自動でファイルが作成されます。パラメータには、ファイル名どモードを指定します。
fopen()関数で指定するファイルモード
| モード |
読み/書き |
ポインタ |
| r |
読み |
先頭 |
| r+ |
読み/書き |
先頭 |
| w |
書き |
先頭
|
| w+ |
書き/読み |
先頭 |
| a |
書き |
終端
|
| a+ |
書き/読み |
終端 |
次のサンプルは上書きされます。
ソース
<?php
$file_name = "sample.txt";
//ファイルを上書きモードで開く
$file = fopen($file_name, "w") or die("OPENエラー $file_name");
flock($file,LOCK_EX);
//文字列を準備
$moji = "ABCEDFG\n";
//データを書き込む
fputs($file,$moji);
//ロック解除
flock($file,LOCK_UN);
//ファイルを閉じる
fclose($file);
?>
次のサンプルは追加して書き込みます。
ソース
<form method=post action="">
<input type="hidden" name="answer" value="start">
<input type="submit" value="実行">
</form>
<?php
if(isset($_POST['answer'])) {
$file_name = "sample.txt";
//ファイルを追記モードで開く
//die() は、message を出 力し、スクリプトの処理を終了する
$file = fopen($file_name, "a") or die("OPENエラー $file_name");
//ファイルをロック(同時アクセスがないよう)
flock($file,LOCK_EX);
//文字列を準備(改行コード含む)
$moji = "テスト文字\n";
//データを書き込む
fputs($file,$moji);
//ロック解除
flock($file,LOCK_UN);
//ファイルを閉じる
fclose($file);
echo 'ファイルに書き込みました';
} else {
echo 'ボタンが押されていません。';
}
?>