首页 > 解决方案 > preg_replace 格式转换为输出日期

问题描述

我想替换文本中的变量,以便用户可以设置自定义日期格式。

在最简单的例子中,他们可以做到这一点......

$text = 'The date today is {{current_date|Y-m-d}} isnt it';

$text = preg_replace('/{{current_date\|(.*)}}/', date("$1"), $text);

echo $text;

但这又回来了……

The date today is Y-m-d isnt it

但我希望它回来......

The date today is 2020-07-10 isnt it

所以日期没有被格式化。任何想法我做错了什么?

标签: php

解决方案


捕获的日期格式不会传递到date函数中。它只能用于插值到替换字符串中。你会想preg_replace_callback改用:

$text = preg_replace_callback('/{{current_date\|(.*)}}/', function($match) {
    return date($match[1]); 
}, $text);

这允许您将捕获的字符串传递给函数以进行进一步处理。


推荐阅读