2017-01-18 9 views
-1

私は、人名を取るところでGmailが行う方法と同様の「アバター」を作成しようとしており、各単語の最初の文字を取得してアバターを作成しています。PHPの各単語の最初の文字を取得

私はこのquestionと一緒に従っていますが、文字列変換エラーの配列を取得しています。

基本的に、ユーザーには、名前、名、姓のいずれかの「名前」があります。だから、$ strのは、これらのいずれかが考えられます。この場合

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

質問について不明な点は何ですか?なぜ私は私の質問のためにdownvoteを受けたのかわからない – 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

私はそれを編集しました。それを試してください 2番目のコードは、それを配列に戻していました。 –

+0

何かがハイフン付きの結合された単語であれば、それを1と見なしますが、個別の単語は個別に扱われます。 ターンに 'strtoupper()'を使って大文字にすることができます。 –

関連する問題