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

如何用PCRE正则在PHP中捕获文件名中的无横杠日期?

在PHP中提取无横杠日期的几种方法

针对你的需求,这里有几个实用的方案可以实现从文件名中提取并去除横杠的日期:

方法1:先捕获带横杠的日期,再移除横杠

这种方法最直观,先通过正则捕获完整的日期字符串,再用字符串替换去掉横杠:

$filename = 'file-2018-02-19-second.json';
// 用更精准的日期格式匹配代替原来的通配符,避免误匹配
if (preg_match('/.*file-(\d{4}-\d{2}-\d{2}).*.json/', $filename, $matches)) {
    $cleanDate = str_replace('-', '', $matches[1]);
    echo $cleanDate; // 输出:20180219
}

这里把你原来的..........换成\d{4}-\d{2}-\d{2},可以更精准地匹配YYYY-MM-DD格式的日期,减少意外匹配的可能。

方法2:拆分捕获年、月、日,再拼接

如果后续需要单独使用年、月、日的部分,这种方法会更灵活:

$filename = 'file-2018-02-19-second.json';
if (preg_match('/.*file-(\d{4})-(\d{2})-(\d{2}).*.json/', $filename, $matches)) {
    $cleanDate = $matches[1] . $matches[2] . $matches[3];
    echo $cleanDate; // 输出:20180219
}

正则里的三个分组分别捕获年份、月份、日期,直接拼接就得到了无横杠的日期字符串。

方法3:用preg_replace一步到位

可以直接通过正则替换,把整个文件名转换成你需要的无横杠日期:

$filename = 'file-2018-02-19-second.json';
$cleanDate = preg_replace('/.*file-(\d{4})-(\d{2})-(\d{2}).*.json/', '$1$2$3', $filename);
echo $cleanDate; // 输出:20180219

这里利用正则的反向引用$1、$2、$3,直接将捕获的年、月、日拼接成结果,无需额外处理步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:56:18