php / jquery - 检查url中的图像是否真的存在

时间:2012-05-07 18:39:35

标签: php image url

我找到了一种很好的方法来检查页面是否真的存在:

$headers=@get_headers($imageurl);
if(strpos($headers[0],'200')===false){
    echo "not valid";
    exit;
}

但我需要做的是检查该页面上是否只有图像。 例如,当您尝试以下链接时: www.google.com/image.jpg 它将返回200,因为谷歌有自己的错误页面 - 但是,应该可以不仅找出该页面上没有图像,而且还可以找到图像不是该页面上的唯一内容,即使有其他内容(例如:http://www.kapstadt-entdecken.de/wp-content/gallery/robben-island/1robben-island.jpg)。

我如何才能实现这一目标?

非常感谢!

丹尼斯

3 个答案:

答案 0 :(得分:1)

您可能希望在获取标头时使用HEAD请求(默认情况下不会这样做):

stream_context_set_default(array(
    'http' => array(
        'method' => 'HEAD'
    )
));

其次,您可以将第二个参数传递给get_headers以便为您解析:

$headers = get_headers($imageurl, 1);

然后,您可以按照正常情况检查其余部分:

if (strpos($headers[0], '200') === false) {
    echo "not valid";
    exit;
}

if (isset($headers['Content-Type']) && 0 === strncmp($headers['Content-Type'], 'image/', 6)) {
    echo "valid image";
} else {
    echo "probably not an image";
}

答案 1 :(得分:0)

$headers = @get_headers($imageurl);

$is_image = false;
foreach ($headers as $header) {
    if (strpos($header, 'Content-Type: image/') === 0) {
        $is_image = true;
        break;
    }
}

答案 2 :(得分:0)

还有get_headers ......其中一个将是

image/png
image/jpeg
image/gif

所以

$isImage = false;
foreach($headers as $header){
    if(strpos($header,'image/')==true){
        $isImage = true;
    }
}