被发送到的 URLget_headers()
具有 html 转义的实体,特别&
是而不是实际的&
& 符号。尽管它get_headers()
最初的用途 ( <img src='{$url}'... />
) 并不介意 html 实体编码版本,但这对 . 该解决方案只是&
在构建 URL 时使用。
Gravatar有效性检查的具体应用
由于我在检查 Gravatar 的有效性时遇到了这个问题,而且我使用的代码在一些或多或少的“官方”文档中,所以我发布这个以防其他人遇到同样的问题和想要一个剪切和粘贴的解决方案。
$url = "$host/avatar/";
$url .= $email_hash;
$url .= '?s='.$size;
$url .= '&d=404';
$gravatar_response_code = wp_cache_get( $email_hash );
if ( false === $gravatar_response_code ){
$response = wp_remote_head ( $url );
if ( is_wp_error( $response ) ){
$gravatar_response_code = "error";
} else {
$gravatar_response_code = $response['response']['code'];
}
wp_cache_set( $email_hash, $gravatar_response_code, '', 300 );
}
if ( '200' == $gravatar_response_code )
$avatar = "<img alt='{$safe_alt}' src='{$url}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
请注意,某些功能和wp_cache_get()
是WordPress 特定的功能。HTTP API的方法将调用,甚至取决于可用的方法,因此它是 100% 相关的,并且表现出与此处记录的相同的行为。wp_remote_head()
wp_cache_set()
wp_remote_head()
curl
get_headers()
fopen()