我使用preg_replace替换模板中的单词
echo preg_replace('~%(\w+)%~e', '$obj->$1', $template);
$ obj是一个搜索数组,$ template是我正在搜索和替换的文件。所以我要替换像%REPLACE%。
这样的关键字现在我真的不明白它是如何工作的,显然e修饰符刚被弃用,所以我想我必须使用pref_replace_callback。我们很快升级到php7,所以我必须在我的代码中替换这一行。
现在我已经看过堆栈溢出并找到其他人类问题的答案,不幸的是答案对这个特定模式没有帮助。我不明白这是如何工作的,更不用说如何让preg_replace_callback工作了。我试过阅读preg_replace,但实际上我不明白它是如何工作的。
所以我如何将上面的代码更改为preg_replace_callback?
PS。我在preg_replace_callback上搜索过教程,但没有解释我必须做的事情。
这与其他问题不重复。这是一个完全不同的preg_replace。另一个问题的答案并没有回答我的问题,我也不知道如何解决这个问题,因为我对preg_replace关键字不是很了解。
答案 0 :(得分:1)
非常确定这会奏效:
echo preg_replace_callback('~%(\w+)%~',
function($m) use($obj) {
return $obj->{$m[1]};
},
$template);