php

テキストファイルの読込みと書込み

今回は、textファイルを読み書きすることについて書きます。
なので、テキストファイルを扱います。
テキストファイルはh、テキストエディタで読み書きでできる
ファイルの事です。フォームを設置して、ユーザーにファイル名を
入力させ、ファイル名が送信されたら指定されたファイルを読み込みます。

サンプルコードの実行結果はこちら

ファイルは次の順序で処理します。
1.ファイルをオープンする
2.ファイルを読み込む又は書き込む
3.ファイルをクローズする

ファイル名のオープンはfopen()関数を使います。
この関数にはファイル名・オープンモードの2つの引数を渡します。
今回は読出しを行うモードで"r"を設定しています。

$fp = fopen($_POST["title"] ,"r");

fopen()関数に指定できるオープンモードには、
以下のようなものがあります。

オープンモード 意味
"w" 書き込み用にテキストファイルをオープン
"r" 読み込み用にテキストファイルをオープン
"a" 追記用にテキストファイルをオープン
"w+" 更新のため、書き込み用にテキストファイルをオープン
"r+" 更新のため、読み込み用にテキストファイルをオープン
"a+" 更新のため、追記用にテキストファイルをオープン

feof()関数を使うと、ファイルの終端を判別することができます。

そこにwhile文文を使い、fgets()関数で1行ずつ読み込みます。
サンプルコードだと、textareaタグ内に出力されるので、テキストエリア内に
ファイルの内容が表示されます。

while( !feof($fp) ){
echo fgets($fp);
}

最後に、fclose()関数でファイルをクローズします。
この処理を忘れると、不具合が起きることがあります。

fclose($fp);

ファイルをオープンするときに、file_exists()関数
使ってファイルが存在するかを判定しています。

関数名 戻り値 内容
file_exists(string $filename) boolean ファイルの存在を調べる
fopen(string $filename,string $mode) resource ファイルをオープンする
feof(resource $file) boolean ファイルが終端か調べる
fgets(resource $file) string ファイルから1行読み込む
fclose(resource $file) なし ファイルをクローズ

テキストファイルから1行読み込むにはfgets()関数を使う。

テキストファイルに書き込む

今回は、テキストファイルに文字列を書き込んでみましょう。

サンプルコードの実行結果はこちら




書込みをしてみる。

ファイル名:




ファイルを書き込む場合には、fopen()関数の2番目の
引数を"w"(書込み)とします。テキストボックスから送信された内容を、
fputs()関数で1行ずつ書き出しています。

関数名 戻り値 内容
fputs(resource $file) string ファイルに1行書き込む

テキストファイルに1行書き込むには、fputs()関数を使う。

ファイル名入力時の注意点

ファイル名をユーザーに入力させる場合には、
注意しなければならないことがあります。
重要なファイルを読み出したり、書き込まれたりしないように
注意しなければいけません。実際にこうしたファイルを名を
入力させるには、ファイル名を限定する必要があります。

-php
-, ,