2012/03/22更新

[PHP] ファイルの読み書きが簡単に出来る事に感激!数行で読み書き出来る方法

このエントリーをはてなブックマークに追加      

今日はPHPでファイルを読み込む操作を学びました。ファイルのリソース管理はどの言語でもある程度必要かと思いますが、PHPは簡単で良いですね(*´∇`*)PHPへの好感度が更にUP!!

f:id:yoheiM:20110611201527p:image




ファイルの中身を読み込んで表示する

とりあえず全部読み込んで表示してしまう系の実装。ファイル読み込みと出力までが1行で表現出来るのは、簡単で良いですね。

echo "ファイル名を入力:";
$a = trim(fgets(STDIN));
@readfile($a) or exit('*ファイルが読み込めませんでした');

readfile関数にファイルパスを指定することで、ファイルを読み込むことが出来る。そしてreadfile関数の前に付いている「@」は、readfile関数でエラーが発生した場合には、「or 」の後ろに書かれた処理を実行して、次に進むというもの。ファイルの読み込みが失敗してもそれで終わりにしないためには、「@」をつけます。

なおreadfile関数はWebページ上の内容も読み取れるみたいです。以下のように指定すると、yoheiMのブログページのソースコードが取得出来ます。

readfile('http://d.hatena.ne.jp/yoheiM/') 



テキストファイルを1行ずつ読み取る

ファイルの中身を1行ずつ処理する場合の方法です。

echo "ファイル名を入力:";
$f = trim(fgets(STDIN));
$lines = @file($f) or exit("*ファイルが読み込めませんでした");
for ($i = 0; $i < count($lines); $i++)
     echo ($i + 1) . ': ' . $lines[$i];

file関数を利用する事で1行1行が配列形式で取得出来ます。取得した配列から1つずつ要素を取り出す事で、1行ずつ扱うことが出来ます。




手動でファイルのオープン、読み取り、クローズを行う

手動でファイルのオープンクローズ等を行う方法です。

echo "ファイル名を入力:";
$a = trim(fgets(STDIN));
$f = @fopen($a, 'rb') or exit('*ファイルを読み込めませんでした');
while (!feof($f)) echo fgets($f, 21) . "\n";

fclose($f);

fopen関数でファイルを開く、fgets関数でファイルから読み込む、fclose関数でファイル入出力ストリームを閉じることが出来ます。

fopen関数の第2引数に指定する値

fopenの第2引数には、ファイルをどう扱いたいかを指定します。


r読み取り専用で開く
w上書きモードで開く
a追記モードで開く
bバイナリーモードで開く
tテキストモードで開く

他にもありますが、よく使うのはこんなものかも。上記例の場合には、「バイナリーモードで読み取る」事を指定しています。

ファイル読み取りの関数

ファイル読み取りの関数には以下のような関数が用意されているようです。


fgets(リソース)ファイルから全部読み込む
fgets(リソース, バイト数)ファイルから指定されたバイト数読み込む
fgetc(リソース)ファイルから1文字だけ読み取る

上記の例では2番目で、21バイトずつ読み込んでいます。

ついでにファイル書き込み関数

ファイル書き込み関数には以下のような関数があるようです。


fput(リソース, 書き込み文字列)ファイルに指定された文字列を書き込む



ファイルに書き込む

最後にファイルに書き込む例を記載したいと思います。既に上記で書き込みも説明していますので、例のみです♪(´ε` )

function saveText ($str) {
$f = fopen('save.txt', "ab") or exit("*ファイルアクセスに失敗しました\n");
fputs($f, $str . "\n");
fclose($f);
}
echo "save.txtに保存する文字を入力して下さい:";
$a = trim(fgets(STDIN));
saveText($a);

コマンドラインから入力された文字列をsave.txtファイルに追記しています。




最後に

ファイルの読み書きも比較的簡単に出来て良かったヨカタ。PHPの次の学習もガンバろっと。今はこの本で勉強しています。3行コードで色々な事を実現してみようとする作者の姿勢が好きです(・∀・)

(Amazon)

みるみるPHPがわかる本

みるみるPHPがわかる本







こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。