我發現「\ 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