正则表达式和口音/波浪形

时间:2012-06-20 15:49:53

标签: php regex diacritics

我应该如何在正则表达式中包含重音?我想检测来自a-zäáàëéèíìöóòúùñç的信件,但这个正则表达式不起作用:

$pattern = '/^([a-zäáàëéèíìöóòúùñç])/i';

5 个答案:

答案 0 :(得分:3)

怎么样:

cat test.php
<?php
preg_match('/\pL/u', 'é', $m);
print_r($m);
?>


php -q test.php
Array
(
    [0] => é
)

答案 1 :(得分:2)

您可以尝试使用预定义的类来匹配所有字母,例如:

[\p{L}]

这适用于大多数正则表达式引擎。

您可以在此处阅读有关正则表达式中unicode的更多信息,例如:http://www.regular-expressions.info/unicode.html

答案 2 :(得分:1)

您可能会尝试将u标记添加到正则表达式中(请参阅modifiers页面上的 PCRE_UTF8

答案 3 :(得分:0)

如果删除最后一个'i',我正在使用Rubular进行测试,如果没有它(并且没有/,因为这些是特定于PHP的。)

所以基本上在这个页面中测试它:^([a-zäáàëéèíìöóòúùñç])

答案 4 :(得分:0)

在这里你可以找到我的问题的解决方案: Using of regex whith preg_replace_callback ,似乎正则表达式必须像:$ pattern ='/(\ p {L})(。+)/ iu';