3

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

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

5 回答 5

3

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

[\p{L}]

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

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

于 2012-06-20T16:07:07.790 回答
3

怎么样:

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


php -q test.php
Array
(
    [0] => é
)
于 2012-06-20T17:31:10.747 回答
1

您可能会尝试将u标志添加到您的正则表达式(请参阅修饰符页面上的PCRE_UTF8 )

于 2012-06-20T16:06:00.760 回答
0

如果您删除最后一个“i”怎么办,我正在使用Rubular 对其进行测试,没有它它也可以工作(也没有,/因为这些是特定于 php 的。)

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

于 2012-06-20T16:16:00.973 回答
0

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

于 2012-06-21T08:50:13.010 回答