PHP实现日期排序目录中前后记录文件自动链接的问题求助
自动生成俱乐部记录页面的前后日期链接解决方案
提取当前页面的日期标识
先从当前脚本文件名中剥离出纯日期字符串:// 获取当前页面的文件名(不含路径) $currentFile = basename($_SERVER['PHP_SELF']); // 移除.php后缀,得到yyyymmdd格式的日期 $currentDate = str_replace('.php', '', $currentFile);筛选并排序目录内的有效记录文件
遍历记录目录,只保留符合yyyymmdd.php格式的文件,再按日期升序排序:$dir = './'; // 记录文件所在目录,根据实际路径调整 $files = scandir($dir); $validDates = []; foreach ($files as $file) { // 正则匹配严格符合格式的文件 if (preg_match('/^\d{8}\.php$/', $file)) { $date = str_replace('.php', '', $file); $validDates[] = $date; } } // 按日期顺序排序,确保前后链接逻辑正确 sort($validDates);定位当前日期,生成前后链接
找到当前日期在排序后数组中的位置,再生成对应的上一页、下一页链接:$currentIdx = array_search($currentDate, $validDates); $prevLink = ''; $nextLink = ''; // 生成上一日记录链接(如果存在) if ($currentIdx > 0) { $prevDate = $validDates[$currentIdx - 1]; $prevLink = "<a href=\"{$prevDate}.php\">Previous</a>"; } // 生成下一日记录链接(如果存在) if ($currentIdx !== false && $currentIdx < count($validDates) - 1) { $nextDate = $validDates[$currentIdx + 1]; $nextLink = "<a href=\"{$nextDate}.php\">Next Day</a>"; } // 首页链接(根据你的实际首页路径调整) $homeLink = "<a href=\"index.php\">Home</a>";输出链接到页面
将生成的链接插入到页面需要的位置:echo "{$prevLink} | {$homeLink} | {$nextLink}";
问题说明
你之前用的代码失效,大概率是因为没有严格过滤非目标文件,或者排序逻辑缺失,导致array_search无法准确定位当前日期的索引。上面的代码通过正则筛选+强制排序,能确保每个页面都能找到正确的前后记录文件。
内容的提问来源于stack exchange,提问作者D.G. Wright
相关产品推荐
相关产品推荐

