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