我对preg_match_all和类似的人不太熟悉,我正在寻找一种简单的方法来执行以下操作:
考虑这个文字:
$string = 'This text was written on [set_stamp]1341066037[/set_stamp] and this one on [set_stamp]1340903119[/set_stamp].';
我需要做什么:
[set_stamp]
和[/set_stamp]
date('Y-m-d H:i:s', $timestamp)
[set_stamp]
和[/set_stamp]
代码最终输出将与此类似:
“本文写于2012-07-12 14:26,而这篇文章发表于2012-07-11 17:10。”
答案 0 :(得分:0)
您可以将preg_replace_callback()
与以下正则表达式一起使用:
#\[set_stamp\](.+)\[/set_stamp\]#iU
示例代码:
$string = 'This text was written on [set_stamp]1341066037[/set_stamp] and this one on [set_stamp]1340903119[/set_stamp].';
echo preg_replace_callback('#\[set_stamp\](.+)\[/set_stamp\]#iU', function($m) {
return date('Y-m-d H:i', $m[1]);
}, $string);
该代码的输出是:
本文写于2012-06-30 16:20,2012-1-28 19:05。
请注意,匿名函数至少需要PHP 5.3。如果您使用的是旧版本且无法更新,只需创建一个普通函数并将其名称作为字符串传递。