0

有谁知道我将如何将以下代码转换为 php 5.3?

if (eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $this->browser_languages[$i]) && isset($this->catalog_languages[$key])) {

谢谢

-詹姆士

4

2 回答 2

1

preg_match()使用i (PCRE_CASELESS)修饰符是建议的替代方法。

于 2013-03-28T10:21:19.823 回答
0

ereg 函数已弃用,用 PCRE 函数替换它们

http://www.php.net/manual/en/ref.pcre.php

http://php.net/manual/en/reference.pcre.pattern.posix.php

编辑 :

要从 eregi 更改为 preg_match,您需要选择一个将作为分隔符的字符(我经常选择 #)并在分隔符后添加一个 i 标志(这意味着不区分大小写)。

你的例子:

if (eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $this->browser_languages[$i])
    && isset($this->catalog_languages[$key])) {}

会变成 :

if (preg_match('#^(' . $value . ')(;q=[0-9]\\.[0-9])?$#i', $this->browser_languages[$i]) 
    && isset($this->catalog_languages[$key])) {}

这是您需要的最低要求(请注意,您可能需要使用preg_quote()$value但我暂时没有添加它以说明复杂的事情)

另一个注意事项是,如果要转换 ereg(不是 eregi),则不需要添加 i 标志。

于 2013-03-28T10:21:10.653 回答