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
答案 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"
}
}