PHP - BASIC - 11. PHPのファイルシステムを扱う関数 - 4. file関数

file 関数はファイルの内容を読み込んで配列に変換する関数です。次のプログラム( fs3.php )を作成してみましょう。

<?php
$file = "hello.txt";
$array = file($file);
print_r($array);

file 関数は引数に読み込み対象となるファイル名を指定します。上記の場合は引数に $file を指定しているので、 $file に代入されているデータである hello.txt という名前のファイルを読み込み、ファイルの内容を行単位で配列の要素に変換し、戻り値として返却します。またここでは戻り値を受け取るために $array 変数を用意しています。

それからプログラムを実行する前に hello.txt ファイルに以下の内容が保存されているものとします。

Hello PHP
Hello Programming

それでは作成したプログラムを実行してみましょう。ターミナルから次のように実行します。

$ php fs3.php
Array
(
    [0] => Hello PHP

    [1] => Hello Programming

)

実行結果から hello.txt ファイルの内容を読み込んで、行単位で配列の要素に変換しているのがわかります。

改行コードの取り扱いについて

ところで先ほどの実行結果を見ると配列の要素に改行が多いのが気になります。これは配列の各要素には改行コードが含まれているためです。もし、配列の各要素に改行コードが含まれていない場合は次のような実行結果になるはずです。

$ php fs3.php
Array
(
    [0] => Hello PHP
    [1] => Hello Programming
)

file 関数はファイルの内容を行単位で配列の要素に変換しますが、このとき各行の終端の改行コードの取扱については注意が必要です。 file 関数は第2引数に FILE_IGNORE_NEW_LINES 定数を指定することで行の終端のの改行コードを取り除くことができます。

さきほどのプログラム( fs3.php )を次のように修正してみましょう。

<?php
$file = "hello.txt"; 
$array = file($file, FILE_IGNORE_NEW_LINES); 
print_r($array);

file 関数の第2引数に FILE_IGNORE_NEW_LINES 定数を指定しています。それでは修正したプログラムを実行してみましょう。ターミナルから次のように実行します。

$ php fs3.php
Array
(
    [0] => Hello PHP
    [1] => Hello Programming
)

実行結果から各行の終端の改行コードが除去されているのがわかります。

ここで取り上げた file 関数の FILE_IGNORE_NEW_LINES 定数のようにPHPの関数には、引数として定数の指定が可能な定数が多数用意されています。引数にどのような定数が使えるのか調べるにはPHPマニュアル 関数リファレンスを参照するようにします。

まとめ

  • file - ファイル全体を読み込んで配列に格納する
  • 引数
    1. 読み込み対象となるファイル名
    2. フラグ
      • FILE_IGNORE_NEW_LINES 定数指定すると改行コードを除去する
  • 戻り値
    • 配列(ファイルの内容を行ごとに要素に変換したもの)
    • ただし、読み込みに失敗した場合は false