PHPプログラミング

最終更新日:
公開日:

レシピ

ファイル / ディレクトリ

ファイルのデータを一括で取得する

file_get_contents関数、またはfile関数を使ってファイルの内容を一括で取得する方法を解説します。

この記事のポイント

  • ファイル内のデータを一括取得する
  • 取得する値の形式で関数を使い分ける
  • 対象ファイルが読み取り可能な場合のみ実行できる

目次

ファイルのデータを手軽に取得

ファイル内にあるデータをシンプルに読み込みたい場合は、file_get_contents関数file関数を使うと便利です。

コード例

// ファイルへのパス
$path = './test.txt';

// file_get_contents関数でファイルデータを読み込む
$file_content = file_get_contents($path);

echo nl2br($file_content);

// file関数でファイルデータを読み込む
$file_content2 = file($path);

foreach( $file_content2 as $data ) {
	echo nl2br($data);
}

出力方法が異なるのは、file_get_contents関数は単一の文字列で取得するのに対し、file関数は1行ずつに分割した配列形式で取得するからです。
試しに、var_dump関数でそれぞれ取得した値を出力してみます。
元のファイル「test.txt」は次のようなテキストデータが入っています。

test.txt

--------------------
Test file
--------------------

Line1
Line2
Line3
Line4
Line5

file_get_contents関数でデータを取得すると次のようになります。

file_get_contents関数の出力結果

string(83) "-------------------- Test file -------------------- Line1 Line2 Line3 Line4 Line5 "

続いて、file関数でデータを取得した結果です。

file関数の出力結果

array(9) {
	[0]=> string(21) "-------------------- "
	[1]=> string(10) "Test file "
	[2]=> string(21) "-------------------- "
	[3]=> string(1) " "
	[4]=> string(6) "Line1 "
	[5]=> string(6) "Line2 "
	[6]=> string(6) "Line3 "
	[7]=> string(6) "Line4 "
	[8]=> string(6) "Line5 "
}

いずれもデータを一括で取得できますが、取得できる値の形式が異なるため、どのような処理を行うかによって使い分けてください。

使用例

ファイルの読み込みには対象となるファイルが読み取りを許可している必要があります。
そこで、is_readable関数を使ってファイルを読み取れるか確認した上で、データを一括取得するコードを紹介します。

コード例

// ファイルへのパス
$path = './test.txt';

// ファイルを読み取れるか確認
if( is_readable($path) ) {

	// file_get_contents関数でファイルデータを読み込む
	$file_content = file_get_contents($path);

	echo nl2br($file_content);

} else {
	echo 'ファイルの読み込み権限がありません。';
}

対象ファイルが読み取り可能な場合のみif文の中が実行されます。