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
最佳答案
基本上你需要使用 modifier u
使用 unicode 字符串时的选项。然而,正则表达式也可以使用 :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"
}
}
关于PHP Regex 查找字符串中所有大写的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30776077/