You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:01:12