получить первую букву каждого слова - PullRequest
69 голосов
/ 14 марта 2012

Как мне получить первую букву каждого слова для данной строки?

$string = "Community College District";
$result = "CCD";

Я нашел метод javascript, но не знал, как преобразовать его в php.

Ответы [ 22 ]

2 голосов
/ 12 октября 2015

Что-то, что я приготовил.

/**
 * Return the first letter of each word in uppercase - if it's too long.
 *
 * @param string $str
 * @param int $max
 * @param string $acronym
 * @return string
 */
function str_acronym($str, $max = 12, $acronym = '')
{
    if (strlen($str) <= $max) return $str;

    $words = explode(' ', $str);

    foreach ($words as $word)
    {
        $acronym .= strtoupper(substr($word, 0, 1));
    }

    return $acronym;
}
1 голос
/ 26 февраля 2016

Если во входной строке больше пробелов между двумя буквами, попробуйте это.

function first_letter($str)
{
    $arr2 = array_filter(array_map('trim',explode(' ', $str)));
    $result='';
    foreach($arr2 as $v)
    {
        $result.=$v[0];
    }
    return $result;
}

$str="    Let's   try   with    more   spaces       for  fun .   ";

echo first_letter($str);

Demo1

Альтернатива того же кода

function first_letter($str)
{
    return implode('', array_map(function($v) { return $v[0]; },array_filter(array_map('trim',explode(' ', $str)))));;
}

$str="    Let's   try   with    more   spaces       for  fun .   ";

echo first_letter($str);

Demo2

1 голос
/ 02 июня 2013

Используя основу Prateeks, вот простой пример с объяснениями

//  initialize variables
$string = 'Capitalize Each First Word In A String';
$myCapitalizedString = '';

//  here's the code
$strs=explode(" ",$string);    
foreach($strs as $str) {
  $myCapitalizedString .= $str[0]; 
}

//  output
echo $myCapitalizedString;  // prints 'CEFWIAS'
1 голос
/ 09 мая 2018

Вот функция, которая возвращает вам инициалы имени, и если инициалы состоят только из 1 буквы, то она возвращает первые 2 буквы имени.

function getNameInitials($name) {

    preg_match_all('#(?<=\s|\b)\pL#u', $name, $res);
    $initials = implode('', $res[0]);

    if (strlen($initials) < 2) {
        $initials = strtoupper(substr($name, 0, 2));
    }

    return strtoupper($initials);
}
1 голос
/ 23 апреля 2013

Я думаю, вам нужно взорваться и снова присоединиться к ним .....

<?php
$string  = "Progress in Veterinary Science";
$pieces = explode(" ", $string);
$str="";
foreach($pieces as $piece)
{
    $str.=$piece[0];
}    
echo $str; /// it will result into  "PiVS"
?>
0 голосов
/ 06 января 2016

Мне нравится выражение Reg над любым другим методом извлечения строк, но если вы не знакомы с Reg Ex, то слышите, что это метод, использующий explode() функцию PHP:

$string = "David Beckham";
$string_split = explode(" ", $string);
$inititals = $string_split[0][0] . $string_split[1][0];
echo $inititals;

Очевидно, что приведенный выше код будет работать только с именем, содержащим два слова.

0 голосов
/ 23 апреля 2013
<?php $arr = explode(" ",$String);

foreach($arr as $s)
{
   echo substr($s,0,1);
}

?>

сначала я взрываю строку пробелами, а затем подставляю первый символ.

http://php.net/substr

http://php.net/explode

0 голосов
/ 27 мая 2013

Попробуйте

function initials($string) {
        if(!(empty($string))) {
            if(strpos($string, " ")) {
                $string = explode(" ", $string);
                $count = count($string);
                $new_string = '';
                for($i = 0; $i < $count; $i++) {
                $first_letter = substr(ucwords($string[$i]), 0, 1);
                $new_string .= $first_letter;
            }
            return $new_string;
            } else {
                $first_letter = substr(ucwords($string), 0, 1);
                $string = $first_letter;
                return $string;
            }
        } else {
            return "empty string!";
        }
    }
    echo initials('Thomas Edison');
0 голосов
/ 23 апреля 2013

Попробуйте это-

$strs=explode(" ",$string);

foreach($strs as $str)
  echo $str[0];
0 голосов
/ 23 апреля 2013

Примерно так должно получиться:

$string = 'Some words in a string';
$words = explode(' ', $string); // array of word
foreach($words as $word){
    echo $word[0]; // first letter
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...