我正在尝试验证一些以 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(
您可能正在使用不同的 PHP 设置运行。你可以通过比较 Apache 中 phpinfo(( 的输出来验证这一点:
<?php phpinfo();
从命令行到 phpinfo((:
$ php -i
很可能你的CLI被设置为非utf8字符集(建议:切换到UTF8!(,所以PHP得到了一些非utf8编码的字符串。
要使其适用于 UTF8 字符串,请使用 u
(utf8( 修饰符:
var_dump(preg_match("/[[:alnum:]]/iu", "عايش لهدف"));