如何在PHP中构建短语的缩略语

时间:2010-09-09 14:56:03

标签: php string acronym

我正在寻找一种方法,我可以从输入字段中提取每个单词的第一个字母,并将其放入变量中。

示例:如果输入字段为"Stack-Overflow Questions Tags Users",则变量的输出应为"SOQTU"

9 个答案:

答案 0 :(得分:18)

$s = 'Stack-Overflow Questions Tags Users';
echo preg_replace('/\b(\w)|./', '$1', $s);

与codaddict相同但更短

  • 对于 unicode 支持,请将u修饰符添加到正则表达式:preg_replace('...../u',

答案 1 :(得分:12)

类似的东西:

$s = 'Stack-Overflow Questions Tags Users';

if(preg_match_all('/\b(\w)/',strtoupper($s),$m)) {
    $v = implode('',$m[1]); // $v is now SOQTU
}

我正在使用正则表达式\b(\w)来匹配字边界 后面的 字词字符。

编辑: 为确保您的所有Acronym字符都是大写字母,您可以使用strtoupper,如图所示。

答案 2 :(得分:5)

$initialism = preg_replace('/\b(\w)\w*\W*/', '\1', $string);

答案 3 :(得分:5)

完全不同:

$input = 'Stack-Overflow Questions Tags Users';

$acronym = implode('',array_diff_assoc(str_split(ucwords($input)),str_split(strtolower($input))));

echo $acronym;

答案 4 :(得分:3)

如果它们仅由空格分隔而不是其他东西。这就是你如何做到的:

function acronym($longname)
{
    $letters=array();
    $words=explode(' ', $longname);
    foreach($words as $word)
    {
        $word = (substr($word, 0, 1));
        array_push($letters, $word);
    }
    $shortname = strtoupper(implode($letters));
    return $shortname;
}

答案 5 :(得分:3)

正则表达式匹配如上面所述的codaddict,或str_word_count()1作为第二个参数,它返回找到的单词数组。请参阅手册中的示例。然后,您可以按照自己喜欢的方式获得每个单词的第一个字母,包括substr($word, 0, 1)

答案 6 :(得分:2)

str_word_count()功能可能会满足您的需求:

$words = str_word_count ('Stack-Overflow Questions Tags Users', 1);
$result = "";
for ($i = 0; $i < count($words); ++$i)
  $result .= $words[$i][0];

答案 7 :(得分:2)

function initialism($str, $as_space = array('-'))
{
    $str = str_replace($as_space, ' ', trim($str));
    $ret = '';
    foreach (explode(' ', $str) as $word) {
        $ret .= strtoupper($word[0]);
    }
    return $ret;
}

$phrase = 'Stack-Overflow Questions IT Tags Users Meta Example';
echo initialism($phrase);
// SOQITTUME

答案 8 :(得分:0)

$s = "Stack-Overflow Questions IT Tags Users Meta Example";    
$sArr = explode(' ', ucwords(strtolower($s)));
$sAcr = "";
foreach ($sArr as $key) {
   $firstAlphabet = substr($key, 0,1);
   $sAcr = $sAcr.$firstAlphabet ;
}