我有一个函数来检查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

09-25 19:22