phpでファイルの最終行を取得したい時のサンプルコード。
テキストやCSVデータのファイル1行分を取得したい時がある。fopen()コマンド等でファイルを読みこむ方法があるが、Linuxの「cat | tail」 コマンドのような簡単な関数はないか探していたところ、file()関数をを使うとコードが簡単になることが分かった。
file関数は、「file($file_name)」と記述するだけでテキストファイルの全行を配列に取得できる便利な関数。これに以下のオプションを追加することで、改行と空行(改行のみの行)を読み取らずにテキストファイルを配列に格納することができる。
○file関数のオプション
FILE_SKIP_EMPTY_LINES — 空行を読み取らない
FILE_IGNORE_NEW_LINES — 改行文字を無視する
容量の小さなファイルでは、file関数を使えば以下のコードで最終行を取得・表示できる。
<?php
$file_name = "http://miyasan.sakura.ne.jp/opendb/iida_agri/data15min.csv";
$lines = file($file_name, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$a = $lines[count($lines)-1]; //count():ファイル行数取得 -1を―2すれば最終行から2行目を取得
$data= explode(",",$a); //csvファイルのカンマデリミタ指定で行を配列に展開
echo $data[0].' '.$data[1].'℃'; // htmlで日付と温度を表示
?>
参考URL:https://so-zou.jp/web-app/tech/programming/php/file/lines.htm
コメント