あるサイトで、phpでテキストファイルを読み取って公開日を表示させていたのですが、更新を忘れてしまうことが多々あるため、先の公開予定日の内容をあらかじめいくつか登録しておき、直近のものを表示するようにしました。
これまではテキストファイルに1件登録していましたが、下記のようなcsv形式に変更しました。
date,day,title, 2022年10月26日,(水),3年ぶりの巾着田, 2022年11月30日,(水),廻らない寿司, 2022年12月10日,(土),名古屋でしこたま串焼きを堪能, 2022年12月31日,(土),週末の朝,
今日の日付とdate列の日付を比較し、今日の日付より新しければ配列に格納し一番最初に格納された値を直近のものとして表示するようにしています。
<?php
//今日の日付取得
$date_time = date('Y年m月d日');
$future_publish = [];
$i = 0;
$cav = "onair.csv";
$file = fopen($cav, "r");
$heads = explode(",", fgets($file));
$date = array_search("date", $heads);//公開日
$day = array_search("day", $heads);//曜日
$title = array_search("title", $heads);//タイトル
if($date !== false) {
while(!feof($file)) {
$arr = explode(",", fgets($file));
if($date < count($arr)) {
//今日の日付とcsvデータの日付を比較し、過去のものは変数に格納しない
if ($date_time <= $arr[$date]){
//公開日、曜日、タイトルをくっつけて変数に格納する。
$future_publish[$i] = $arr[$date].$arr[$day].$arr[$title];
$i = $i + 1;
}
}
}
}
fclose($file);
//最初の1件目が直近の公開日なので最初に取得した値を表示させる
echo "公開日".$future_publish[0]. "<br />";
?>
やりたいことはとりあえずできたのでこれで良しとします。