我发现“\ w”可以匹配我的Mac OS X PHP环境中的中文字符。但相同的代码不适用于Linux。为什么 w在Mac OS X PHP环境中与非英文字符匹配?
php -r "echo preg_match('/^\w+$/','人1234', \$m).chr(10); var_dump(\$m);"
的Mac OS X 11.11.3用PHP 5.6.18(CLI),PHP 5.4.45(CLI)导致
1
array(1) {
[0] =>
string(7) "人1234"
}
美分OS 6用PHP 5.6.18(CLI),PHP 5.2.17p1(CLI)结果
0
array(0) {
}
PHP手册说
的字母和数字的定义由PCRE的字符表控制,并且如果特定于语言环境的匹配可能会有所不同。例如,在“fr”(法语)语言环境中,一些大于128的字符代码用于重音字母,并且这些字符与\ w相匹配。“
我想链接到PCRE库的东西。有人解释为什么
很明显,有一些设置使得所有正则表达式都可以识别Unicode。 –
使用'locale'命令查看编码 – anonymous
@anonymous locale是相同的,en_US.UTF-8 – obawan