您可以使用匿名函数将匹配项传递给函数:
$result = preg_replace_callback( "/{([<>])([a-zA-Z0-9_]*)(?{0,1})([a-zA-Z0-9_]*)}(.*){\1/\2}/isU", function($m) { return CallFunction($m[1], $m[2], $m[3], $m[4], $m[5]); }, $result);除了更快之外,这还可以正确处理字符串中的双引号。您当前使用的代码
/e会将双引号
"转换为
"。


![用preg_replace_callback替换不推荐使用的preg_replace / e [重复] 用preg_replace_callback替换不推荐使用的preg_replace / e [重复]](http://www.mshxw.com/aiimages/31/417077.png)
