2
下面是一個簡單的測試程序:的preg_match不匹配重音字符
<?php
$n = "Baden-Württemberg";
preg_match ("/(.*)([^[:print:]])(.*)/", $n, $m);
print_r ($m);
?>
我希望這不符合[^[:print:]]
但輸出是這樣的:
Array
(
[0] => Baden-Württemberg
[1] => Baden-W�
[2] => �
[3] => rttemberg
)
我也試過/(.*)([^\p{L}\p{M}*\s'-\.])(.*)/
和/(.*)([^[:print:]])(.*)/u
但得到相同的結果,除了/u
給出$m[2]='ü'
而不是�
如何匹配重音字符? This answer在我的情況下沒有工作。
你應該更適當地命名你的變量。如果你開始烹飪字母湯,那麼你肯定會在以後很糟糕的時間。 '$ string'和'$ matches'也可以工作。 –
你在運行什麼操作系統?具有5.3.15 /'LC_CTYPE = UTF-8'的Ubuntu似乎正確匹配。 –
嗯......所以**你想要匹配嗎?你最後一個'/ u'的例子在PHP 5.3.8的Windows 7上對我來說工作的很好。沒有'/ u'就好像你以後說的那樣......第一個問號不見了,第二個問題變成了'ü'。 –