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

标签 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

最佳答案

基本上你需要使用 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"
  }
}

Demo

关于PHP Regex 查找字符串中所有大写的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30776077/

相关文章:

php - 使用 php 编辑 mysql 表

使用正则表达式进行 Javascript 字符串操作

javascript - 验证正则表达式问题

javascript - 正则表达式查找最后一个空格字符

javascript - 获取 "error: invalid regular expression"

php - 在 jQuery datepicker 中更改与 MySQL 格式相同的日期格式

PHP MySQL : boolean Value works on local server but returns empty on live server?

php - 使用 PHP DOM 获取子节点的值

php - 警告 : get_headers() This function may only be used against URLs in

Python正则表达式,两个单词之间的单词正确匹配,但不带点