有谁知道我将如何将以下代码转换为 php 5.3?
if (eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $this->browser_languages[$i]) && isset($this->catalog_languages[$key])) {
谢谢
-詹姆士
有谁知道我将如何将以下代码转换为 php 5.3?
if (eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $this->browser_languages[$i]) && isset($this->catalog_languages[$key])) {
谢谢
-詹姆士
preg_match()
使用i (PCRE_CASELESS)
修饰符是建议的替代方法。
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 标志。