获取PHP中每个单词的第一个字母

时间:2017-01-18 00:22:31

标签: php

我正在尝试创建一个" avatar"类似于Gmail的使用方式,它会取一个人的名字并获得每个单词的第一个字母来创建各种各样的化身。

我已经跟着这个question但我得到一个数组到字符串转换错误。

用户基本上有一个"名称"这可能是名字或名字和姓氏。因此$ str可以是以下任何一种:

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

在这种情况下,我希望我的函数的输出类似于JJD,具体取决于它们的名称是一个单词还是多个单词,如上面的示例。我怎么做到这一点?是否有任何正则表达式我可以运行以除去句点,破折号或下划线以防万一?

这是我的功能,这个问题是它希望名称有空格并非总是如此

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;
    }
}

1 个答案:

答案 0 :(得分: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;
    }
}