我正在寻找一种方法,我可以从输入字段中提取每个单词的第一个字母,并将其放入变量中。
示例:如果输入字段为"Stack-Overflow Questions Tags Users"
,则变量的输出应为"SOQTU"
答案 0 :(得分:18)
$s = 'Stack-Overflow Questions Tags Users';
echo preg_replace('/\b(\w)|./', '$1', $s);
与codaddict相同但更短
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 ;
}