Php 预匹配不是';t匹配重音字符
下面是一个简单的测试程序:Php 预匹配不是';t匹配重音字符,php,regex,Php,Regex,下面是一个简单的测试程序: <?php $n = "Baden-Württemberg"; preg_match ("/(.*)([^[:print:]])(.*)/", $n, $m); print_r ($m); ?> 我还尝试了/(.*)([^\p{L}\p{M}*\s'-\.])(.*/和/(.*)([^[:print:]])(.*)/u但是得到了相同的结果,除了/u给出了$M[2]='u'而不是� 如何匹配重音字符?在我的情况下不起作用。我不太确定你在这里想要实现什么 p
<?php
$n = "Baden-Württemberg";
preg_match ("/(.*)([^[:print:]])(.*)/", $n, $m);
print_r ($m);
?>
我还尝试了/(.*)([^\p{L}\p{M}*\s'-\.])(.*/
和/(.*)([^[:print:]])(.*)/u
但是得到了相同的结果,除了/u
给出了$M[2]='u'
而不是�代码>
如何匹配重音字符?在我的情况下不起作用。我不太确定你在这里想要实现什么
preg_match('/[[:^print:]]/u', '$n, $m);
精确匹配重音字符(您可以使用[[:^print:][]
以及[^[:print:][]
,在此处产生相同的结果)
如果在模式中使用(.*)
,则使用U
修饰符(ungreedy)通常很有用。在第一个示例中,这将给出以下结果:
$n = "Baden-Württemberg";
preg_match ("/(.*)([^[:print:]])(.*)/uU", $n, $m);
print_r ($m);
Array
(
[0] => Baden-Wü
[1] => Baden-W
[2] => ü
[3] =>
)
我不太清楚你想在这里实现什么
preg_match('/[[:^print:]]/u', '$n, $m);
精确匹配重音字符(您可以使用[[:^print:][]
以及[^[:print:][]
,在此处产生相同的结果)
如果在模式中使用(.*)
,则使用U
修饰符(ungreedy)通常很有用。在第一个示例中,这将给出以下结果:
$n = "Baden-Württemberg";
preg_match ("/(.*)([^[:print:]])(.*)/uU", $n, $m);
print_r ($m);
Array
(
[0] => Baden-Wü
[1] => Baden-W
[2] => ü
[3] =>
)
您应该更恰当地命名变量。如果你开始煮字母汤,你以后肯定会过得不好$string
和$matches
同样有效。您正在运行什么操作系统?Ubuntu与5.3.15/LC_CTYPE=UTF-8
似乎匹配正确。。。那么你想匹配什么呢?另外,您最后一个使用/u
的示例在使用PHP5.3.8的Windows7上运行良好。没有/u
就像你后来说的那样。。。第一个问号消失了,第二个问号变成了ü
。您应该更恰当地命名变量。如果你开始煮字母汤,你以后肯定会过得不好$string
和$matches
同样有效。您正在运行什么操作系统?Ubuntu与5.3.15/LC_CTYPE=UTF-8
似乎匹配正确。。。那么你想匹配什么呢?另外,您最后一个使用/u
的示例在使用PHP5.3.8的Windows7上运行良好。没有/u
就像你后来说的那样。。。第一个问号消失了,第二个问号变成了ü
。