PHP 生成 Gravatar 地址

PHP 生成 Gravatar 地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/**
* Gravatar 生成
*
* @param string $value 邮件或者 hash
* @param int $size 大小,范围 1-2048
* @param array $other 其他
* @return string
*/
function gravatar(string $value, int $size = 128, array $other = []) {
$value = strtolower(trim($value));

if(filter_var($value, FILTER_VALIDATE_EMAIL)) {
$hash = md5($value);
} else {
$hash = $value;
}

// 图片大小 1-2048 px
if($size < 1) {
$size = 1;
} else if($size > 2048) {
$size = 2048;
}

// 默认头像
// URL -- 链接
// 404 -- 404
// mp -- 神秘人物
// identicon -- 抽象图形
// monsterid -- 小怪物
// wavatar -- Wavatar
// retro -- 像素化面孔
// robohash -- 机器人
// blank -- 透明 PNG
if(!isset($other['default'])) {
$other['default'] = '';
}

// 强制加载默认头像
// 这个要注意的是 forcedefault 如果存在不管值多少都是强制加载默认头像的
if(isset($other['forcedefault'])) {
$other['forcedefault'] = 'y';
}

// 头像等级,可限制一些敏感头像显示
// wiki: https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system
//
// g —— 适合任何年龄的访客查看
// pg —— 可能有争议的头像,只适合13岁以上读者查看
// r —— 成人级,只适合17岁以上成人查看
// x —— 最高等级,不适合大多数人查看
if(!isset($other['rating'])) {
$other['rating'] = 'g';
} else {
$other['rating'] = strtolower($other['rating']);

if(!in_array($other['rating'], ['g', 'pg', 'r', 'x'])) {
$other['rating'] = 'g';
}
}

// 镜像源域名
$domain = 'cn.gravatar.com';
// $domain = 'cdn.v2ex.com';

// URL 拼装
return sprintf('https://%s/avatar/%s?size=%d&%s', $domain, $hash, $size, http_build_query($other));
}
往上