如何只获取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"
我想转换缩写形式的短语,但不希望单词的每个首字母都构成缩写,只有大写字母。例如,我想将字符串 "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"