PHP Regex在字符串中查找所有大写单词

时间:2015-06-11 08:55:46

标签: php regex

PHP Regex在字符串中找到所有大写单词:

$string = "test sample test: 2015. ŽYDRŪNAS PAVARDENIS";

preg_match_all('/\b([A-Z-][\p{L}\pL]+)\b/', $string, $matches);

var_dump($matches);

输出:

array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(8) "YDRŪNAS"
    [1]=>
    string(10) "PAVARDENIS"
  }
  [1]=>
  array(2) {
    [0]=>
    string(8) "YDRŪNAS"
    [1]=>
    string(10) "PAVARDENIS"
  }
}

问题是消失符号' Ž' ?

如果要修改regex表达式,那将不会删除UTF-8符号?

在线代码:Code

1 个答案:

答案 0 :(得分:5)

在使用unicode字符串时,基本上需要使用modifier u选项。然而,使用:upper: character class也可以简化正则表达式,因为它将匹配所有大写的unicode字符。

像这样:

$string = "test sample test: 2015. ŽYDRŪNAS PAVARDENIS";

preg_match_all("/[[:upper:]]+/u", $string, $matches);
var_dump($matches);

输出:

array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(10) "ŽYDRŪNAS"
    [1]=>
    string(10) "PAVARDENIS"
  }
}

Demo