php 中 space 的全部大写字符串

All caps string with space in php

我必须从字符串中提取 "THE NEED OF FOLLOWING A RELIGION " 这样的字符串。 我提取了 THENEEDOF 等单个单词,但我需要完整的大写字母字符串,如 "THE NEED OF FOLLOWING A RELIGION" 但无法这样做,请帮忙。

preg_match_all("/[A-Z]*/", $html, $out);

谢谢

对原始代码的非常基本的修改,一次查找大于 1 的大写字母。

$str='This is a string WITH MIXED CASE words and WE ONLY WANT capitals';
preg_match_all("/[A-Z\s]{2,}/", $str, $out);
echo '<pre>',print_r($out,true),'</pre>';

输出:

Array
(
    [0] => Array
        (
            [0] =>  WITH MIXED CASE 
            [1] =>  WE ONLY WANT 
        )

)

您的正则表达式只是漏掉了一些分隔符条件,即

Words has to be either followed or leaded by a space.

将上面的句子转换为正则表达式我们得到

[A-Z]*(?=\s)|(?<=\s)[A-Z]*

上面的正则表达式可以解释为

\sWORD
WORD\s
\sWORD\s

DEMO

您可以像 [A-Z ] 一样将白色 space 添加到您的 class 中。现在你可以获得大写单词的所有字符串,但也可以获得单个 spaces.To 的长凳避免获得单个 spaces 你使用这个 ([A-Z]+[A-Z ]*[A-Z]) 我添加了 () 来捕获匹配的结果。 您可以实际查看 here.