正则表达式匹配所有语言php的字母

时间:2016-08-14 03:30:53

标签: php regex expression

我试着用几个小时在php中找到合适的正则表达式来匹配任何语言字母但是为了防止它允许空间

我试过这个

[^\p{L}]

这没关系,但它看起来像是允许空间

然后我试试这个

[^\w_-]

它仍然看起来它允许空间

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

您需要指定Unicode修饰符u才能获得Unicode character properties in PCRE

例如......

$pattern = "/([\p{L}]+)/u";
$string  = "你好,世界!Привет мир! !مرحبا بالعالم";
if (preg_match_all($pattern, $string, $match)) {
    var_dump($match);
}

给我们......

array(2) {
  [0]=>
  array(6) {
    [0]=>
    string(6) "你好"
    [1]=>
    string(6) "世界"
    [2]=>
    string(12) "Привет"
    [3]=>
    string(6) "мир"
    [4]=>
    string(10) "مرحبا"
    [5]=>
    string(14) "بالعالم"
  }
  [1]=>
  array(6) {
    [0]=>
    string(6) "你好"
    [1]=>
    string(6) "世界"
    [2]=>
    string(12) "Привет"
    [3]=>
    string(6) "мир"
    [4]=>
    string(10) "مرحبا"
    [5]=>
    string(14) "بالعالم"
  }
}