重写PHP代码不使用eregi

时间:2012-07-03 21:20:38

标签: php regex preg-match eregi

  

可能重复:
  Converting ereg expressions to preg

如何在不使用“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;
        }

感谢您的帮助!

1 个答案:

答案 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的手册页。