提问者:小点点

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

因此没有格式化日期。 知道我做错了什么吗?


共2个答案

匿名用户

捕获的日期格式不会传递到date函数中。 它将仅可用于插入替换字符串。 您将希望使用PREG_REPLACE_CALLBACK:

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

这允许您将捕获的字符串传递到一个函数中,以便进一步处理。

匿名用户

如果它是PHP版本<=5.6,下面的代码可以工作。 更新版本/e已删除

$text = 'The date today is {{current_date|Y-m-d}} isnt it';
$text = preg_replace('/{{current_date\|(.*)}}/e', 'date("$1")', $text);
echo $text;