echo preg_match("/\b(בדיקה|מילה)\b/iu", "זוהי בדיקה");
何らかの理由で、このコードは、テストした複数のサーバーでは1を返しますが、特定の1つのサーバーでは0を返します。
PCREは、UTF-8サポートとUnicodeプロパティサポートを使用してコンパイルされています。何が問題になる可能性がありますか?
echo preg_match("/\b(בדיקה|מילה)\b/iu", "זוהי בדיקה");
何らかの理由で、このコードは、テストした複数のサーバーでは1を返しますが、特定の1つのサーバーでは0を返します。
PCREは、UTF-8サポートとUnicodeプロパティサポートを使用してコンパイルされています。何が問題になる可能性がありますか?
PHP が使用する PCRE のバージョンには違いがある場合があります。
PHP および PCRE バージョン: http://php.net/pcre.installation
8.10 以降 (PHP 5.3.4 以降) を使用する必要があります。
- \b、\d、\s、\w、および特定の POSIX 文字クラスが Unicode プロパティを使用するように PCRE_UCP を追加しました。(*UCP) をパターンの先頭に使用して、このオプションを設定できます。この機能をテストするために、pcretest を変更して /W を追加しました。POSIX インターフェイス経由で使用できるように REG_UCP を追加しました。
編集: いくつかのテストを行ったところ、PHP 5.3.10 では 1、PHP 5.3.2 および PHP 5.3.3 では 0 が返されました。
PCRElibのバージョンによって異なる場合があります。物事をより正規化するには、«UCP動詞»を使用してみてくださいpreg_match('/(*UCP)\b(בדיקה|מילה)\b/iu', 'זוהי בדיקה')
。
それでも、5.3.4以降またはコンパイルフラグで言及されている場合はPHPに同梱されているPCREv8.10が必要--with-pcre-regex=DIR
です。