我想替换文本中的变量,以便用户可以设置自定义日期格式。
在最简单的例子中,他们可以这样做。。。。
$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
因此没有格式化日期。 知道我做错了什么吗?
捕获的日期格式不会传递到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;