PHPでファイルの読み込みを行う方法はいくつかあります。「1行ずつ読み込む方法」「文字列として一気に読む込む方法」「一気に読み込んで配列に格納する方法」などがありますが、それぞれサンプルプログラム紹介していきます。
1行づつ読み込む方法(fgets)
$fp = fopen('read_file.txt', 'r');
while( $line_txt = fgets($fp) ) {
echo $line_txt;
}
fclose($fp);
プログラム解説
fopen 関数でファイルを開きます。第1引数は読み込むファイルのパスを指定し、第2引数の「r」は読み込みモードを指定しております。モードは「r」の他にもいろいろありますが、主なものは書き込みモード「w」、追記モード「a」です。
fgets 関数でファイルから1行ずつ読み込みを行い、変数に文字列として格納しております。
読み込みが終わったら、fclose 関数でファイルを閉じます。
feof 関数を使用した書き方
1行づつの読み込みはfeof 関数を使って次のように書くことも可能です。feof 関数はファイルの最後まで達しているかどうかを調べます。
$fp = fopen('read_file.txt', 'r');
while( !feof($fp) ) {
$line_txt = fgets($fp);
echo $line_txt;
}
fclose($fp);
ファイルを一気に読み込む方法(file_get_contents)
ファイルを1行づつではなく、関数を使用して内容をすべて一気に読み込むこともできます。
$contents = file_get_contents('read_file.txt');
echo $contents;
プログラム解説
file_get_contents 関数は引数にファイルのパスを指定することで、ファイルの内容をまるごと読み込むことができます。読み込んだ内容は文字列として変数に格納されます。
この関数で読み込んだ内容をHTMLで表示する場合はうまく改行されませんが、改行コードを「< br />」に変換すれば、きちんと改行もされて表示されます。文字列の変換は通常、str_replace 関数を使用しますが、nl2br 関数を使用すれば改行コードを「< br />」に変換してくれます。
file_get_contents 関数はxmlファイルやjsonファイルを読み込むのに便利です。引数にウェブ上のURLを指定して読み込むことも可能です。
ファイルを読み込んで配列に格納する方法(file)
ファイルを一気に読み込んで1行ずつ配列に格納することもできます。
$array = file('read_file.txt');
print_r($array);
プログラム解説
file 関数を使用することでファイルの内容を一気に読み込んで、1行づつ配列に格納することができます。読み込んだ行の末尾には改行コードがついてます。例えば次のような内容のファイルを読み込んだ場合、
aaa
bbb
ccc
ddd
eee
print_r で表示した場合、結果は次のようになります。
Array
(
[0] => aaa
[1] => bbb
[2] => ccc
[3] => ddd
[4] => eee
)
第2引数(任意)に「FILE_IGNORE_NEW_LINES」を指定することで、改行コードを取り除いて読み込むこともできます。
「FILE_IGNORE_NEW_LINES」を指定した場合の実行結果は次のようになります。
Array
(
[0] => aaa
[1] => bbb
[2] => ccc
[3] => ddd
[4] => eee
)
コメント