Как построить аббревиатуры фразы в PHP
Я ищу способ извлечь первую букву каждого слова из поля ввода и поместить ее в переменную.
пример: если поле ввода "Stack-Overflow Questions Tags Users"
тогда выход для переменной должен быть чем-то вроде "SOQTU"
8 ответов
что-то типа:
$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)
матч слово-char сразу после слова границы.
изменить:
Чтобы убедиться, что все ваши аббревиатуры char находятся в верхнем регистре, вы можете использовать strtoupper
как показано на рисунке.
$s = 'Stack-Overflow Questions Tags Users';
echo preg_replace('/\b(\w)|./', '', $s);
то же самое, что и codaddict, но короче
- на unicode поддержка, добавить
u
модификатор регулярного выражения:preg_replace('...../u',
просто чтобы быть абсолютно разные:
$input = 'Stack-Overflow Questions Tags Users';
$acronym = implode('',array_diff_assoc(str_split(ucwords($input)),str_split(strtolower($input))));
echo $acronym;
если они разделены только пробелом , а не другие вещи. Вот как вы можете это сделать:
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;
}
соответствие регулярному выражению, как codaddict говорит выше, или str_word_count () С 1
в качестве второго параметра, который возвращает массив найденных слов. См. примеры в руководстве. Тогда вы можете получить первую букву каждого слова так, как вам нравится, в том числе substr($word, 0, 1)
на 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];
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