用于检查网站是否为图像的功能

时间:2018-01-10 21:29:14

标签: javascript php html image

我有一个功能来检查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;
        }
    }
}
}

1 个答案:

答案 0 :(得分:3)

我相信giphy正在嗅探http标题“accept” - 或者也许是用户代理字符串。在任何情况下,当我使用工具显示该网址的标题时,我会看到“image / gif”,但Chrome检查员会显示一个网页,其中包含text / html作为内容类型。

giphy有一个关于如何嵌入的网页。使用ajax可能有一种解决方法,但这超出了你的问题的范围。现在看来giphy似乎不想要热链接。

Giphy Article on Embedding Images