$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()
?
您可以使用匿名函数 http://php.net/manual/en/functions.anonymous.php将匹配传递给您的函数:
$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
会转换双引号"
into \"
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)