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ただし、今のところ複雑なことに注意するために追加していません)。

もう 1 つの注意点は、(eregi ではなく) ereg を変換する場合は、i フラグを追加する必要がないことです。

于 2013-03-28T10:21:10.653 に答える