php - 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
所以日期没有被格式化。任何想法我做错了什么?
解决方案
捕获的日期格式不会传递到date
函数中。它只能用于插值到替换字符串中。你会想preg_replace_callback
改用:
$text = preg_replace_callback('/{{current_date\|(.*)}}/', function($match) {
return date($match[1]);
}, $text);
这允许您将捕获的字符串传递给函数以进行进一步处理。
推荐阅读
- c - 是否可以在不违反严格别名的情况下将字符数组用作内存池?
- c++ - 可以创建一个函数来一般设置传入的结构成员吗?
- json - 如何访问地图列表中的数据?
- python - 在 Python 中评分 R 模型
- scala - 如何在 Spark 读取时捕获 spark.read FileNotFoundException?
- ruby-on-rails - 重命名 Rails 6.1 应用程序后的 Webpack / Yarn 错误
- python - 在基于函数的视图中将多个值解析为 user_passes_test
- python - 从 mpl 平行坐标图中删除图例?
- angular - Angular 的 Kendo UI 不显示任何数据
- c# - 如何将字符串从 httpcontet.current.session.getstring 转换为某个给定类型