[PHP] ファイルを読み込む
こんにちは、@yoheiMuneです。
今日はPHPでファイルを読み込む操作を学びました。ファイルのリソース管理はどの言語でもある程度必要かと思いますが、PHPは簡単で良いですね(*´∇`*)PHPへの好感度が更にUP!!
ファイルの中身を読み込んで表示する
とりあえず全部読み込んで表示してしまう系の実装。ファイル読み込みと出力までが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)
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2010/04
- メディア: 単行本
- クリック: 4回
- この商品を含むブログ (6件) を見る
運営しているサイトです。どうぞよろしくお願いします(*´∇`*)
HTML5Learners:HTML5を学び合うFacebookPage
HTML5サンプルページ:作成したサンプルを載せているサイト
yoheim.NET:技術情報を中心に情報発信サイト