PHPのfile()関数を使用しファイルの内容全体を簡単に読み取ってみます。
file()関数は、ファイル全体を配列として読み込むことができます。ファイルの内容を単一の文字列ではなく、行の配列として返されます。
なお、配列の各要素は、ファイルの1行が改行文字を含めて格納されます。
■基本的な構文
file(filename, flag, context)
filenameは、読み込むファイルのパスを指定します。
flagは、オプションです。1つまたは複数の定数を指定できます。
contextは、オプションです。ファイルハンドル(どのファイルを処理しているかを管理するための名前)のコンテキストを指定します。NULLを使用することで省略することができます。
■環境
・Windows10
・WampServer Version 3.2.3 64bit
・PHP Version 7.3.21
■file()関数を使用しファイル内容全てを読み取る
では、早速file()関数を使用しファイル内容全てを読み取ってみます。
■コード
<html lang="ja">
<head>
<title>file()関数を使用しファイル内容全てを読み取る</title>
</head>
<body>
<?php
$file = "C:/wamp64/www/project/test.txt";
if(file_exists($file)){
$array_1 = file($file) or die("エラー: ファイルを開くことができません");
foreach($array_1 as $element){
echo $element;
}
} else{
echo "エラー: ファイルが存在しません";
}
?>
</body>
</html>
今回はfileという変数を宣言し、その中でtest.txtというファイルを指定し格納します。
次にif文を使用し、file_exists()関数で、file変数の中に格納したファイルが存在するかチェックします。存在する場合(真・True)は、array_1変数の中のfile()関数が使用され、file変数のファイルを配列として読み込み、格納します。またファイルを読み込んだ際にdie()関数でエラーが発生した場合の処理を指定します。
その後、foreach文を使用し、配列として読み込んだ情報(array_1変数)をelement変数に格納します。この時、配列内の要素(今回は文字列)が格納されます。
格納した配列内の要素を、echo文を使用し、繰り返し出力します。(ループ処理します。)
ちなみに、if文を使用し、file_exists()関数で、file変数の中に格納したファイルが存在しない場合(else)は、echo文を使用し、エラーの文字列を出力します。
なお、test.txtというファイルの中身を開いて読み込みますが、ファイルの中身は上記の内容(日本語の文字列)が記述されています。
■実行
では、このスクリプトを「read_file_test.php」という名前で保存し、実行させてみます。
実行させてみると、file()関数を使用したことで、ファイルの情報の読み込みが行われ、読み込んだ情報が配列となり、foreach文を使用した繰り返し処理で出力させることができました。
コメント