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