2

UTF-8 でエンコードされたアラビア語のテキストを検証しようとしていますが、PHP 5.3.8 で予期しない結果が発生しました。CLI を介して次のスニペットを実行すると、Apache を介して true および false が返されます。

var_dump(preg_match("/[[:alnum:]]/i", "عايش لهدف"));

mbstring.func_overload を 7 に設定し、内部エンコーディングを UTF-8 に設定しています。また、.htaccess ファイルで AddDefaultCharset を UTF-8 に設定しています。

何が起こっているのか誰にも考えがありますか?

編集:実際には5.3.8を使用していました(5.3.10ではありません)

4

2 に答える 2

0

おそらく異なる PHP 設定で実行しています。これは、Apache の phpinfo() の出力を比較することで確認できます。

<?php phpinfo();

コマンドラインから phpinfo() へ:

$ php -i
于 2012-05-17T20:33:46.217 に答える
0

ほとんどの場合、CLI は utf8 以外の文字セットに設定されているため (推奨: UTF8 に切り替えてください!)、PHP は utf8 以外でエンコードされた文字列を取得しています。

UTF8 文字列で動作させるには、u(utf8) 修飾子を使用します::

var_dump(preg_match("/[[:alnum:]]/iu", "عايش لهدف"));
于 2012-05-17T20:39:40.797 に答える