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

很可能您的 CLI 设置为非 utf8 字符集(建议:切换到 UTF8!)所以 PHP 得到了一些非 utf8 编码的字符串。

要使其与 UTF8 字符串一起使用,请使用u(utf8) 修饰符::

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

您可能正在使用不同的 PHP 设置运行。您可以通过比较 Apache 中 phpinfo() 的输出来验证这一点:

<?php phpinfo();

从命令行到 phpinfo():

$ php -i
于 2012-05-17T20:33:46.217 回答