ファイルの読み込み1
そふぃのPHP入門 >> PHP実践リファレンス >> ファイル操作 >> ファイルの読み込み1

ファイルの読み込み1

ファイルの読み込み

今回はファイルの内容を読み込める関数を紹介します。読み込むだけだと分かりにくいので、ついでに表示までします。

ファイル操作についてで紹介したreadfile()関数はfopen()関数を使わなくてもよい(というか、すでに関数内部にそういった処理が組み込まれてるので意識する必要がない)便利な関数ですが、「ファイルの内容を読み込む」という処理にもfopen()関数が必要のない便利な関数が存在しますのでまずはそういった関数から紹介していきます。

前回でせっかく「ファイルを開く」と「ファイルを閉じる」というファイル操作の基本をやったばかりなのですが、このページでは出てきません。そういった処理が必要な関数は次のページでちゃんと紹介します。ちなみに、エラー制御演算子@」についての説明は省きますのでご了承下さい。

file_get_contents関数―ファイルの内容を全て取得

解説

file_get_contents()関数はファイルの内容を全て取得してくれます。readfile()関数ではファイルの内容を取得して表示までしてくれましたが、file_get_contents()関数を使うと表示はせずに、ファイルの内容を文字列として返します。但し、file_get_contents()関数が使えるのはPHP4.3.0からです。

参考関数

書式

  • string file_get_contents( string filename [, bool use_include_path ] )

第1引数には開きたいファイルへのパスを指定します。

第2引数の「インクルードパス」はphp.ini(PHPの設定ファイル)に定められている「インクルードパス」という場所を検索するかどうかのオプション引数です。オプションなので省略可能で、省略した場合は検索しません。この引数はオプションですし、ここの解説ではインクルードパスじゃなくて実際のパスを記述していきますので、使いません。使い方次第では便利なので、こんなもんもある・・・くらいで覚えておいて下さい。

返り値は読みこんだ文字列ですが、読み込みに失敗した場合はFALSEを返します。

PHP5以降、オプション引数が追加されています。ここでは詳しくやりませんので興味のある方はPHPマニュアルを参照して下さい。

PHPマニュアル file_get_contents()

サンプルスクリプト

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

file_get_contents()使用例

  1. <?php
  2. $contents = @file_get_contents('sample.txt');
  3. echo $contents;
  4. ?>

出力結果

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

さて、上記のサンプルだとreadfile()関数の時と変わりませんが、この関数を使う利点は値を変数に代入できる事です。readfile()関数だと「出力する」という機能も含まれていますのでその場で出力してしまいますが、file_get_contents()関数ならファイルの内容を変数化しておいて後で使う、という事ができます。すぐに表示する事が目的ならreadfile()関数を使った方が面倒でないのは確かです。

file関数―ファイルの全ての内容を配列として取得

解説

今度のfile()関数もファイルの内容を全て取得しますが、1行ずつ配列に格納して返してくれます。「1行ずつ」という事は、改行文字「\n」などのある所までが1行として扱われるって事です。取得した内容に改行文字は付いたままとなります。

参考関数

  • file() ---- ファイルの内容を全て取得して配列に格納する

書式

  • array file( string filename [, int use_include_path ] )

引数や返り値はfile_get_contents()関数と同じなので省略させてもらいます。

file()関数もPHP5以降、オプション引数が追加されています。ここでは詳しくやりませんので興味のある方はPHPマニュアルを参照して下さい。

PHPマニュアル file()

サンプルスクリプト

ここで読み込むファイルもfile_get_contents()関数のサンプルと同じなので説明は省略させてもらいます。

file()使用例

  1. <?php
  2. $contents = @file('sample.txt');
  3. foreach($contents as $line){
  4.   echo $line."<br />";
  5. }
  6. ?>

出力結果

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

1行ずつ配列に格納してくれるのでループ文(ここではforeach)で処理ができ、行末に改行を付けながら表示する、何て事も可能になります。

勘のいい人はお気づきでしょうが、配列としてしまった以上は配列関連の関数を使って色々操作ができます。例えば特定の行を削除したり、追加したりもできますし、配列操作をしないまでも<td>タグの中に行を入れながらループしていけばテーブル表示になるように、特定の処理を追加しながら表示していくって事も楽チンにできるようになります。

今回はfopen()関数やfclose()関数の必要ない関数を紹介しましたが、次はfopen()関数を使ってファイルを開いた時に使えるファイルの読み込み関数を紹介します。