$result = preg_replace( “/{([<>])([a-zA-Z0-9_])(\?{0,1})([a-zA-Z0-9_])}(.*){\1\/\2}/iseU”, “CallFunction(‘\1’,’\2’,’\3’,’\4’,’\5’)”, $result );
上面的代码在升级到PHP 5.5后给出了弃用警告:
不推荐使用 :preg_replace():不推荐使用/ e修饰符,而应使用preg_replace_callback
如何用替换代码preg_replace_callback()?
preg_replace_callback()
您可以使用匿名函数将匹配项传递给函数:
$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会将双引号"转换为\"。
/e
"
\"