ファイル操作について
そふぃのPHP入門 >> PHP実践リファレンス >> ファイル操作 >> ファイル操作について

ファイル操作について

ファイル操作について

ファイル操作といってもそんなに難しく捉える事はありません。いつもパソコンでやってるような操作、「ファイルを開く」とか「ファイルの内容を読む」などなどをPHPでやるってだけの話です。しかも、このファイル操作はほとんどがPHPの定義済み関数で実現できます。つまり、「ファイル操作=ファイル関連の関数を覚える」だと思ってもいいくらいPHPの関数でいろいろできてしまうので、内部的にどのような処理をしているかなどは一切知らなくてもいいです。

このファイル操作ですが、代表的なところではカウンターや掲示板などに利用します。カウンターならカウント値・掲示板なら名前や本文などのデータをファイルに記録して管理するわけですが、このデータファイルは表示させたいページのファイルとは別に用意しておく必要があります。

つまり、カウンターを作りたい場合は最低でも

  1. カウンターを表示させるファイル
  2. カウント値を記録しておくファイル

の2枚が必要になります。

カウンターの場合だと、カウント値を記録しているファイルからデータ(カウント値)を読み込んで表示する、というのがカウンターの基本になります。この場合、値の記録ファイルからデータを読み込む時にいろいろなファイル操作が必要になるのですが、そういった操作をどうやるかはもうちょっと先で詳しくやります。

補足になりますが、カウント値や名前・本文などのデータはデータベースに記録しておく事もできます。データの記録用にデータベースを使うかファイルを使うかの違いだけですし、どちらを選ぶかは用途によって使い分ければいいです。そもそもデータベースが使えないサーバもありますし、データベースが使用できなくてもファイルに記録しておく事で同じ事ができます。データベースには相当な利点もありますが、使い方がいまいち分からん、とかデータベースって何さ、って方はまずはファイル操作でいろいろ作ってみて下さい。

ファイル管理とデータベース管理のどちらがいいかはそれぞれの判断なのですが、簡単なカウンター程度ならいちいちデータベース使う必要もありませんし、掲示板もアクセス解析も相当な量にならなければファイル管理でもそこそこいけます。とりあえずはファイル管理で覚えておいて次のステップでデータベース、と考えておいた方が無理が来なくていいかもしれません。

ファイルの内容を読み込んで表示―readfile関数

まず、簡単なところでファイルの内容を読みこんで表示する関数を紹介します。ファイルの内容を全て読み込んで表示しますが、ファイルの内容が改行されていても画面上で改行はされません。画面というのはこの場合ブラウザですので、ブラウザの表示上でも改行するためには行末に<br />タグが入っている必要があります。

参考関数

書式

  • int readfile( string filename [, bool use_include_path ] )

ここで読み込むファイルは「sample.txt」というtxtファイルです。ファイルの中身はこうなってます。文字化けする場合はブラウザのメニューから「表示」→エンコード→UTF-8を選択して下さい。

  1. <?php
  2. $file = "sample.txt"; // 読み込むファイルへのパスを変数に格納
  3. @readfile($file);
  4. ?>

出力結果

サンプルテキストです。 2行目です。 ついでにこれは3行目です。 この行で終了です。

引数にはファイルへのパスを指定しますが、今回の場合は同一ディレクトリにあるのでファイル名をそのまま指定しても表示できます。

readfile()の前にエラー制御演算子がついてますが、何らかの理由でファイルを参照できないと、readfile()はFALSEを返し、エラーメッセージが表示されます。

Warning: readfile(ファイル名): failed to open stream: No such file or directory in (ファイルパスとエラー行数)

上記のエラーメッセージは存在しないファイルをreadfile()関数で読み込もうとした場合のエラーですが、エラー制御演算子によってこのようなエラーメッセージの出力を回避できます。ただし、エラー制御演算子がついているとどこで不具合が生じているか分かりにくいので注意して下さい。

今回はtxtファイルを読み込みましたが、HTMLファイルでもPHPファイルでも読み込む事ができます。出力するのは標準出力といって、WebサーバでPHPを動かしている場合はブラウザになりますので、HTMLタグがあればちゃんとタグを解釈して表示されます。但し、PHPファイルの場合はスクリプトの実行は行いません。あくまで読み込んで表示するだけです。

readfile()関数は改行文字の「\n」などを<br />に変えてくれたりはしませんが、ファイルを開いて内容を1行ずつ読み込んだりする事ができるようになると「\n<br / >に変えながら表示する」なんて事も可能です。

今回紹介するのはreadfile()関数だけになってしまいましたが、次ではファイルを開いたり閉じたりっていう基本的な操作をやっていきたいと思います。