如何将 preg_replace e 修饰符转换为 pref_replace_callback

How to convert preg_replace e modifier to pref_replace_callback

我使用 preg_replace 来替换模板中的单词

echo preg_replace('~%(\w+)%~e', '$obj->', $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 关键字不是很好。

很确定这会起作用:

echo preg_replace_callback('~%(\w+)%~',
                           function($m) use($obj) {
                               return $obj->{$m[1]};
                           },
                           $template);