在使用某些遗留代码时,我遇到了2个preg_replace
函数,现已弃用/e
参数。 PHP建议将其替换为preg_replace_callback
。
这些是功能:
首先:
$content = preg_replace("/(\{([a-zA-Z0-9_]+)\})/e", null, $content);
根据我的理解,/e
可以安全地从此功能中删除吗?
第二
$text = preg_replace(
"/<(h[2])>(.+)<\/(h[2])>/Uie",
"'<\\1 id=\"'.createIdByText('\\2').'\">'.stripslashes('\\2').'</\\1>'",
$text
);
任何人都可以帮我解决这些问题或转换为preg_replace_callback,这样他们就不会抛出弃用警告吗?
答案 0 :(得分:2)
在第一种情况下,您确实可以删除e
。对于第二种情况:
$text = preg_replace_callback(
"/<h2>(.+)<\/h2>/Ui",
function($matches) {
return '<h2 id="' . createIdByText($matches[1]) . '">' . $matches[1] . '</h2>';
},
$text
);
我采取了自由来简化正则表达式。不再需要stripslashes
来电,因为它只能用于处理addslashes
使用的自动/e
来电。