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

PHP按日期筛选图片并输出正确JSON格式目录列表的问题

解决PHP筛选指定日期图片并输出标准JSON数组的问题

嘿,我明白你遇到的问题了——直接拼接字符串很容易搞出格式混乱,比如多逗号、引号不配对,根本生成不了标准的JSON数组。其实正确的思路是先把符合条件的文件名收集到PHP数组里,最后用官方的json_encode()来生成标准JSON,这样既省心又不会出错。

下面是完整的解决方案,我会一步步给你拆解:

核心逻辑

  1. 先拿到当天的Ymd格式日期(比如20240520),作为日期对比的基准。
  2. 遍历目标目录下的图片文件。
  3. 对每个文件名,检查是否以yyyymmdd_开头,并且这个日期大于等于当天。
  4. 把符合条件的文件名存入数组。
  5. 最后将数组转为合规的JSON格式输出。

完整代码示例

<?php
// 设置响应头为JSON格式,确保前端能正确识别
header('Content-Type: application/json');

// 获取当天的日期(格式:Ymd,比如20240520)
$today = date('Ymd');

// 遍历目录下的图片文件,支持jpg/jpeg/png/gif格式,可按需扩展
$imageFiles = glob('*.{jpg,jpeg,png,gif}', GLOB_BRACE);

// 用于存储符合条件的文件名
$validImages = [];

foreach ($imageFiles as $filename) {
    // 用正则匹配文件名开头的8位日期(yyyymmdd格式),且后面跟下划线
    if (preg_match('/^(\d{8})_/', $filename, $matches)) {
        $fileDate = $matches[1];
        // 对比文件日期是否大于等于当天
        if ($fileDate >= $today) {
            $validImages[] = $filename;
        }
    }
}

// 输出标准JSON数组
echo json_encode($validImages);
?>

关键细节说明

  • 为什么用数组而非拼接字符串?:json_encode()会自动处理数组的格式,包括正确的引号、逗号分隔,还能自动转义特殊字符,完全符合JSON规范,不会出现手动拼接时的低级错误(比如最后多一个逗号)。
  • 正则匹配的作用:preg_match('/^(\d{8})_/', $filename)确保文件名开头是8位数字(对应yyyymmdd)且后跟下划线,避免误判其他带数字的非目标文件名。
  • 图片格式扩展:如果需要支持更多格式,直接在glob()的参数里添加即可,比如加上webp变成*.{jpg,jpeg,png,gif,webp}。
  • 目录路径适配:如果图片不在当前脚本所在目录,给glob()加上完整路径就行,比如glob('/var/www/images/*.{jpg,jpeg,png,gif}', GLOB_BRACE)。

运行后就能得到你想要的标准JSON数组,比如:

["20240520_abc.jpg", "20240521_def.png"]

内容的提问来源于stack exchange,提问作者vixus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:09:11