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

时间:2017-02-06 19:23:35

标签: php preg-replace-callback

我使用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关键字不是很了解。

1 个答案:

答案 0 :(得分:1)

非常确定这会奏效:

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