0

我发现了这种检查页面是否真的存在的好方法:

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

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

我怎样才能做到这一点?

非常感谢!

丹尼斯

4

3 回答 3

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";
}
于 2012-05-07T18:51:00.107 回答
0
$headers = @get_headers($imageurl);

$is_image = false;
foreach ($headers as $header) {
    if (strpos($header, 'Content-Type: image/') === 0) {
        $is_image = true;
        break;
    }
}
于 2012-05-07T18:42:24.703 回答
0

也与 get_headers ...其中之一将是

image/png
image/jpeg
image/gif

所以

$isImage = false;
foreach($headers as $header){
    if(strpos($header,'image/')==true){
        $isImage = true;
    }
}
于 2012-05-07T18:43:20.117 回答