我从PHP 5我的服务器上刚刚更新了PHP到PHP 7和我得到这些警告:警告:preg_replace_callback():需要参数2
警告:preg_replace_callback()[function.preg替换-callback0]:需要参数2'chr(\ 1)'为有效回调
警告:preg_replace_callback()[function.preg-replace-callback0]:需要参数2,'chr(0x \ 1 )',成为一个有效的回调
警告:preg_replace_callback()[function.preg-replace-callback0]:需要参数2,'chr(\ 1)',作为一个VA盖回调
警告:preg_replace_callback()[function.preg替换-callback0]:要求参数2, 'CHR(0X \ 1)',是一个有效的回调
这是PHP代码:
private function _decode($source)
{
$source = html_entity_decode($source, ENT_QUOTES, 'UTF-8');
$source = preg_replace_callback('/&#(\d+);/me',"chr(\\1)", $source);
$source = preg_replace_callback('/&#x([a-f0-9]+);/mei',"chr(0x\\1)", $source);
return $source;
}
的警告又是从何而来:
$source = preg_replace_callback('/&#x([a-f0-9]+);/mei',"chr(0x\\1)", $source);
我怎么能解决这个问题?
工作!但现在我从$ source = preg_replace_callback('/&#(\ d +);/me',“chr(\\ 1)”,$ source);我如何解决这个问题?谢谢 –
@MateiZoc完全一样。查看使用的代码并尝试将功能复制到其他方法。你实际上只需要复制该行,替换正则表达式并替换'chr'返回的内容。你甚至不需要使用十六进制,因为它是十进制数。 – h2ooooooo
@ h2ooooooo我试试$ source = preg_replace_callback( '/&#(\ d +);/me', function($ m){return chr(hexdec($ m [1]));},// Now a Closure $ source );但我得到错误警告:preg_replace_callback()[function.preg-replace-callback0]:不再支持/ e修饰符,请使用preg_replace_callback而不是 警告:preg_replace_callback()[function.preg-replace-callback0]:/e修饰符不再支持,请使用preg_replace_callback代替 –