如何只获取PHP中的大写首字母?

How to get only the uppercase first letters in PHP?

我想转换缩写形式的短语,但不希望单词的每个首字母都构成缩写,只有大写字母。例如,我想将字符串 "United States of America" 转换为 "USA" 而不是 "USOA",因为我找到的所有代码都有效。

在我的项目中,我必须显示一个 类 的时间表,并且一些 类 名称很大,例如 "Linguagem de Programação Orientada a Objeto" (面向对象的编程语言),如果我使用我在互联网上找到的代码,它将把 "Linguagem de Programação Orientada a Objeto" 字符串变成 LDPOAO,而不是 LPOO,因为它有意义。

我找到的代码:(它将一个字符串变成一个缩写,我想知道如何 select 只有大写字母放入 $result)

$string = "Progress in Veterinary Science";

$expr = '/(?<=\s|^)[a-z]/i';
preg_match_all($expr, $string, $matches);

$result = implode('', $matches[0]);

$result = strtoupper($result);

echo $result;

此正则表达式将查找大写字符,请注意删除的 i[A-Z] 为大写。

$expr = '/(?<=\s|^)[A-Z]/';

这是代码。注意正则表达式的变化:

$string = "Progress in Veterinary Science";

$expr = '/(?<=\s|^)[A-Z]/';
preg_match_all($expr, $string, $matches);    
$result = implode('', $matches[0]);
echo $result;

首先,你真的应该试着理解正则表达式。

您用来获取每个单词第一个字母的那个在末尾有一个修饰符(最后一个斜线后的 i 字符),这使得正则表达式不区分大小写。

在你的例子中,你只需要大写字母,所以你应该删除 i 修饰符,并将所需的字母([a-z] 部分)更改为大写字母([A-Z]) .所以正则表达式变成:

$expr = '/(?<=\s|^)[A-Z]/';
 function abbreviate ($string) {
    $in = explode(" ", $string);
    $abbr = '';
    foreach ($in AS $key => $input) {
        preg_match("/^([A-Z]+)/", $input, $matches);
        $abbr = (isset($matches[0])) ? $abbr.$matches[0] : $abbr;
    }
    return $abbr;
}

echo abbreviate("United States of America");

IMO,简单地删除所有非大写格式的字符似乎容易得多。

$str = 'United States of America';
$str = preg_replace('~[^A-Z]~', '', $str);
echo $str; // "USA"