需要帮助解决如下错误,
preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in line 601
以下代码出错,
$string = preg_replace('~�*([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
$string = preg_replace('~�*([0-9]+);~e', 'chr(\\1)', $string);
AM尝试过。
$string = preg_replace_callback('~�*([0-9a-f]+);~ei', 'chr(hexdec("\\1"))',function ($match) {
return ($match[1]);
}, $string);
但仍然有这样的错误?
Requires argument 2, 'chr(hexdec("\1"))'
答案 0 :(得分:1)
如错误所示,PHP版本不再支持e
修饰符。
preg_replace_callback
等价物如下所示:
$string = preg_replace_callback('~&#x([0-9a-f]+);~i', function ($m) {
return chr(hexdec($m[1]));
}, $string);
注意:不需要正则表达式中的0*
,因为后面的模式会捕获零,并且不会在捕获组中捕获这些零。
但是,因为您的PHP版本等于或高于5.5(those versions produce the error),您可以依赖html_entity_decode
:
$string = html_entity_decode($string);