我正在使用version_compare在一个文件中支持两个版本的
PHP代码,但我仍然收到错误.
码:
if (version_compare(PHP_VERSION,'5.3.0') >= 0) { $alias = preg_replace_callback('/&#x([0-9a-f]{1,7});/i',function($matches) { return chr(hexdec($matches[1])); },$alias); $alias = preg_replace_callback('/&#([0-9]{1,7});/',function($matches) { return chr($matches[1]); },$alias); } else { $alias = preg_replace('/&#x([0-9a-f]{1,7});/ei','chr(hexdec("\\1"))',$alias); $alias = preg_replace('/&#([0-9]{1,7});/e','chr("\\1")',$alias); }
但我得到:
PHP Parse error: Syntax error,unexpected T_FUNCTION
在preg_replace_callback()调用,可能是因为匿名函数.
不可能使用版本检查来决定使用会导致先前版本中的解析错误的语言功能.解析器查看整个文件,无论分支如何.
如果该版本的lint检查失败,则无论分支如何,它将无法正常工作:
> PHP -l file.PHP > PHP Parse error: Syntax error,unexpected T_FUNCTION