Table of Contents
PHPでテキストファイルを開き、中身を読み込む方法はいくつかあります。
特定の一行のみ読み込む場合と、数行読み込む場合で効率の良い処理方法が異なります。
関数 fgets で特定の一行を読み込む
テキストファイルのうち、ある一行のみを読み込む方法です。読み込みたい行がファイルの開始位置に近いとき(2行目だけ、3行目だけなど)は効率が良くなります。
fopen で開いたテキストファイルを fgets で上から一行ずつ読み込んでいき、不要な行は破棄し、必要な行に到達したらその情報を保持します。
// ファイルから特定の一行のみを取得 function getSpecificLineFromFile($filename, $lineNum) { if ($lineNum < 1) { exit("無効な行の指定です。"); } $fp = fopen($filename, 'r'); for ($i = 0; $i < $lineNum; $i++) { $targetLine = fgets($fp); } fclose($fp); return trim($targetLine); }
この関数は、テキストファイル($filename)の指定行($lineNum)を読み込み、行末の改行などを除去して返します。
これによって、ファイル全体を読み込まずに効率よく指定行のみを取得できます。
関数 file で複数行を読み込む
関数 file は、ファイルの内容を一度に全て読み込みます。複数の行を同時に読み込んで処理する場合は、この関数を使用することがあります。
以下のように書くと、変数 $lines は、テキストの各行を配列として保持します。オプション FILE_IGNORE_NEW_LINES は、空行を無視する指定です。オプションは省略可能です。
$lines = file($filename, FILE_IGNORE_NEW_LINES);
したがって、配列のインデックスに行の番号(0から始まる)を指定すると、その行の情報を取り出すことができます。
echo $lines[0],'<br>'; // 1行目を出力 echo $lines[2],'<br>'; // 3行目を出力
file は、テキストファイルのサイズが大きすぎるとエラーとなります。テキストファイルの行数が膨大でなく、かつ複数行の情報が必要という場合に有効です。
以上、テキストファイルから特定の行を読み取る方法でした。