使用PHP语言通过邮箱获取全球公认的Gravatar头像地址

在许多地方我们都需要用到头像,头像就像你在互联网上除了昵称以外的第二个标识~比如我的滑稽! 😆 

什么是 Gravatar

Gravatar 是一个 Globally Recognized Avatar(全球公认的头像),你只需要上传一次头像就创建了你的个人资料,以后当你在支持 Gravatar 的网站上参与互动时,只要提供你与这个头像关联的Email邮箱地址,就能够显示出你的Gravatar头像,一个邮箱地址对应一张头像图片

谁正在使用 Gravatar

程序员常去的 GitHub,以及WordPress 和 Typecho 等博客程序也都使用 Gravatar 作为评论系统的头像

通过邮箱获取地址

我有想法将十年之约官网重构,哈哈,前几天他们在群里说能不能不收集用户头像地址? 用了这么久的WordPress和Typecho,评论的时候都是使用邮箱来获取的头像,直接集成一下不就行了

/**
 * Get either a Gravatar URL or complete image tag for a specified email address.
 */
function getGravatar( $email, $s = 96, $d = 'mp', $r = 'g', $img = false, $atts = array() ) {
    $url = 'https://www.gravatar.com/avatar/';
    $url .= md5( strtolower( trim( $email ) ) );
    $url .= "?s=$s&d=$d&r=$r";
    if ( $img ) {
        $url = '<img src="' . $url . '"';
        foreach ( $atts as $key => $val )
            $url .= ' ' . $key . '="' . $val . '"';
        $url .= ' />';
    }
    return $url;
}

直接调用输出的是图片地址,我们要用的话就用img标签输出一下

$email = '52o@qq52o.cn';
$imgUrl = getGravatar($email);
echo '<img src="'.$imgUrl.'"></img>';

图片的地址并不唯一,还有什么secure.gravatar.com的也可以生成


十年之约的成员有些可能使用的是QQ邮箱,没有Gravatar头像,所以加了一个判断如果是QQ邮箱就获取QQ头像

//获取Gravatar头像 QQ邮箱取用qq头像
function getGravatar($email, $s = 96, $d = 'mp', $r = 'g', $img = false, $atts = array())
{
    preg_match_all('/((\d)*)@qq.com/', $email, $vai);
    if (empty($vai['1']['0'])) {
        $url = 'https://www.gravatar.com/avatar/';
        $url .= md5(strtolower(trim($email)));
        $url .= "?s=$s&d=$d&r=$r";
        if ($img) {
            $url = '<img src="' . $url . '"';
            foreach ($atts as $key => $val)
                $url .= ' ' . $key . '="' . $val . '"';
            $url .= ' />';
        }
    }else{
        $url = 'https://q2.qlogo.cn/headimg_dl?dst_uin='.$vai['1']['0'].'&spec=100';
    }
    return  $url;
}

11 条评论

发表评论

*