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'就好像你以后说的那样......第一个问号不见了,第二个问题变成了'ü'。 –