2017-01-18 4 views
-1

Я пытаюсь создать «аватар», похожий на то, как Gmail делает это, где он будет принимать имя человека и получить первую букву каждого слова, чтобы создать аватар рода.Получите первую букву каждого слова в PHP

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

В основном пользователь имеет «имя», которое может быть именем, именем и фамилией. Таким образом, $ Обл может быть любой из них:

John 
John Doe 
John Doe-man 
John Doe Jr. 
etc.. 

В этом случае, я хотел бы, выход из моей функции, чтобы быть чем-то вроде J или JD в зависимости от того, если их имя одно слово или несколько слов, как образец выше. Как бы я это сделал? Есть ли какое-нибудь регулярное выражение, которое я могу запустить, чтобы на всякий случай также выделять такие вещи, как периоды, тире или подчеркивания?

Вот моя функция, проблема с этим он ожидает имя, чтобы иметь пространство, которое не всегда бывает

if(!function_exists('get_avatar')){ 
    function get_avatar($str){ 
     $words = explode(' ', $str); 
     $acronym = ''; 
     foreach($words as $w) { 
      $acronym .= $w[0]; 
     } 

     $avatar = preg_split("/[\s,_-]+/", $acronym); 
     return $avatar; 
    } 
} 
+0

Почему вы используете функцию preg_split()? – felipsmartins

+0

Что неясно о вопросе? Не знаю, почему я получил нисходящий опрос по моему вопросу – Derek

+0

ну ... я этого не сделал. – felipsmartins

ответ

2

Я хотел бы использовать SUBSTR(); функция.

if(!function_exists('get_avatar')){ 
    function get_avatar($str){ 
     $acronym; 
     $word; 
     $words = preg_split("/(\s|\-|\.)/", $str); 
     foreach($words as $w) { 
      $acronym .= substr($w,0,1); 
     } 
     $word = $word . $acronym ; 
     return $word; 
    } 
} 
+0

Я все еще получаю массив для преобразования строки. В этом случае это потому, что имя someones - «Billy» (без пробелов для взрыва), тогда как другое имя пользователя может быть «John Doe» или «John Doe-Sr». – Derek

+0

Я его отредактировал, попробуйте, Ваш второй бит кода превратил его обратно в массив. –

+0

, используя этот способ, если что-то является соединенным словом с дефисом, он видит его как единое целое, но любое отдельное слово обрабатывается отдельно, вы можете использовать 'strtoupper()' на терне, чтобы сделать его прописным, если хотите. –

Смежные вопросы