微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在PHP中创建字符串的首字母缩写词

如何解决在PHP中创建字符串的首字母缩写词

我想基于字符串的值创建字符串的首字母缩写词。例如,如果字符串中有空格,例如“ Stackoverflow Community Forum”,则首字母缩写应为“ SCF”,但是如果字符串中没有空格,则应使用单词的前3个字母,例如“ Stackoverflow”应为“ STA”。 。 另一部分应该包括:如果字符串只有2个字符长,则应添加一个随机的字母数字字母,例如,如果字符串为“ IT”,则应将其添加为“ ITA”

这是我到目前为止所拥有的。尽管如果我将这些空间拿出来,那么我在第二个If位置就会获得sstA。

这样的想法是,首字母缩写只能是3个字符,并且在后面的示例STA001和下一个首字母缩写SFC002等中应包括递增数字。

$s = 'Stackoverflow Community Forum';

if(preg_match_all('/\b(\w)/',strtoupper($s),$m)) {
    $v = implode('',$m[1]);
    echo $v;
}
if(!preg_match_all('/^\S.*\s.*\S$/',$s))
{
    $v = strtoupper(substr($s,3));
    echo $v;
}

我将不胜感激。谢谢

解决方法

此代码首先使用相同的正则表达式来匹配每个单词的前一个字符,但随后会检查是否找到了一个值。如果只有1个值,则使用整个字符串的前3个字符,否则将内含匹配的字母。

然后循环播放,直到字符串长度为3个字符,每次添加一个随机字符(这允许1个字符字符串)...

// Test Values
$s = 'Stackoverflow Community Forum';
$s = 'Stackoverflow Community';
$s = 'Stackoverflow';
$s = 'IT';
$s = 'I';

$s =strtoupper($s);
if(preg_match_all('/\b(\w)/',$s,$m)) {
    if ( count($m[1]) === 1 )   {
        $v = substr($s,3);
    }
    else    {
        $v = implode('',$m[1]);
    }
}
else    {
    $v = '';
}
// Pad to 3 chars long.
while ( strlen($v) < 3 )    {
    $v .= chr( ord("A") + rand(0,25) );
}
echo $v;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。