我有一个函数来检查url是否是图像。
问题是,当用户发布gif图像时,它不起作用。
它显示的是X而不是图像。网站是html格式的,但它是以image/gif格式获得的。
有什么想法吗?
用户发布的内容:https://media.giphy.com/media/CwbErAWpTQDxS/giphy.gif
它是一个html页面,而不是gif。
我的职能:
function isImage($url){
$url_headers=get_headers($url, 1);
if($url_headers[0] == 'HTTP/1.1 404 Not Found') {
$url_exists = false;
}
else {
$url_exists = true;
}
if($url_exists){
if(isset($url_headers['Content-Type'])){
$type=strtolower($url_headers['Content-Type']);
$valid_image_type=array();
$valid_image_type['image/png']='';
$valid_image_type['image/jpg']='';
$valid_image_type['image/jpeg']='';
$valid_image_type['image/jpe']='';
$valid_image_type['image/gif']='';
if(isset($valid_image_type[$type])){
return true;
}
else{
return false;
}
}
}
}
最佳答案
我相信giphy正在嗅探http头“accept”或者用户代理字符串。无论如何,当我使用一个工具来显示这个url的标题时,我看到了“image/gif”,但是chrome检查器显示了一个以text/html作为内容类型的web页面。
giphy有一个网页讨论如何嵌入。使用ajax可能有办法解决这个问题,但这超出了您的问题范围。就目前而言,giphy似乎不需要热链接。
Giphy Article on Embedding Images