如何在不使用“eregi”函数的情况下重新编写以下代码以保持同样的工作方式,而这在PHP中已被弃用?
if(!eregi($match = "^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$", $headers[0], $matches))
{
$this->_setError('Unexpected HTTP response status');
return FALSE;
}
感谢您的帮助!
答案 0 :(得分:0)
只需在模式的开头和结尾添加#
(这称为“分隔符”),i
作为使表达式不区分大小写的最后一个字符,并使用preg_match()
代替eregi()
。因此产生的调用将是:
!preg_match("#^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$#i", $headers[0], $matches)
为了使将来更易于编写和阅读,请考虑对正则表达式使用单引号。以上内容更容易编写为:
'#^http/[0-9]+\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)$#i'
有关可以与preg_*
函数一起使用的语法的详细信息,请查看有关PCRE Patterns的手册页。