是的,我基本上只是试图将Social Inc.
或David Jason
这样的词组分解为SI
和DJ
。我尝试使用爆炸,但无法弄清楚如何爆炸大写字母BUT
,我是否需要使用preg_match()
?
答案 0 :(得分:6)
您可以将此正则表达式(?![A-Z]).
与preg_replace()
一起使用,以替换除大写字母之外的所有字符。
preg_replace("/(?![A-Z])./", "", $yourvariable)
正则表达式会查找任何 NOT 大写字母(?!
否定前瞻)。
如果您希望在其他情况下进行测试,我已经创建了regex101。
答案 1 :(得分:4)
快速简便:
$ucaseletters = preg_replace('/[^A-Z]/', '', $input);
这将取代范围A-Z内不是大写字母的所有内容。
说明:
^ within [] (Character-Set) is the negation-Operator (=anything that is NOT...)
答案 2 :(得分:1)
尼古拉斯和伯恩哈德提供了成功的正则表达式模式,但它们并不像它们那样高效。
使用/[^A-Z]+/
和带有preg_replace()的空替换字符串。
否定的字符类有一个或多个量词,因此匹配的子字符串越长,需要的替换次数越少。
这也是与preg_split一起使用的最佳模式,但preg_split会生成一个数组,因此还有一个调用implode的额外步骤。
答案 3 :(得分:-1)
我有一个更复杂的解决方案,但它也有效!
$s = str_split("Social Inc.");
foreach ($s as $idx => $char) {
if(preg_match("/[A-Z]/", $char))
{
echo $char;
}
}
它将echo
大写字母。
答案 4 :(得分:-1)
你也可以使用preg_split php函数和regx
$pieces = preg_split('/(?=[A-Z])/',$str);
答案 5 :(得分:-3)
以下是您需要做的事情:
$str = explode(' ', $ster);
$newStr = strtoupper($str[0][0] . $str[1][0]);