PHPプログラミング

レシピ

ファイル / ディレクトリ

ファイルから1行ずつデータを読み込む

fgets関数を使って、ファイルのデータを1行ずつ取得する方法について解説します。

この記事のポイント

  • ファイルデータを1行ずつ読み込む
  • fgets関数を実行するとファイルポインターが1行進む
  • 対象ファイルが読み取り可能である必要がある

目次

ファイルのデータを1行ずつ取得する

fgets関数を使います。
こちらの関数はfopen関数であらかじめファイルを開いた状態で使用する関数です。

コード例

fgets($file_handle);

$file_handleにはファイルポインターリソースが入っている必要があり、fopen関数から取得したものを渡すことでファイルデータを取得することができます。

使用例

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

コード例

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

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

	// ファイルを開く
	$file_handle = fopen( $path, 'r');

	// ファイルから1行ずつデータを取得する
	while( $data = fgets($file_handle) ) {
		echo nl2br($data);
	}

	// ファイルを閉じる
	fclose( $file_handle);

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

is_readable関数で対象ファイルのパーミッションを確認し、読み取り可能な場合のみファイルアクセスを試みます。

fgets関数は、ファイルポインターの位置を基準にデータの読み取りを行いますが、fopen関数の第2パラメータに「r」を渡してファイルを開くとファイルポインターは先頭にセットされます。

続いてwhile文の中でfgets関数を実行し、データを1行文のみ取得します。
これをnl2br関数で改行を有効にした上で出力しています。

fgets関数は、1回実行するとファイルポインターを次の行に進めます。
これをwhile文のループで繰り返していくと、ファイルポインターが1行ずつ進み、ファイルの終端までくるとfgets関数でデータが取得できなくなってfalseを取得し、while文のループが終了するという流れです。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。