2012-05-07 7 views
0

が存在するかどうかを確認私は、ページが実際に存在するかどうかを確認するには、この気の利いた方法が見つかりました:PHP/jqueryの - URL内の画像が本当に

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

私は達成するために必要なものは、しかし、そのページ上にあるかどうかを確認することです実際には画像のみ。 たとえば、次のリンクを試してみると、 www.google.com/image.jpg Googleには独自のエラーページがあるため、200が返されますが、画像がないことを確認するだけでなく他のコンテンツ(ここではhttp://www.kapstadt-entdecken.de/wp-content/gallery/robben-island/1robben-island.jpgなど)がある場合でも、そのページの画像だけがそのページにあるわけではありません。

どのように達成できますか?

ありがとうございます!

デニス

get_headersでも
+1

のContent-Type – Musa

+0

をチェックその他のコンテンツは? –

答えて

1

image/png 
image/jpeg 
image/gif 

になりますデフォルトでは行われません)。

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

第二に、あなたはあなたのためにそれを解析するget_headersに2つ目のパラメータを渡すことができます。

$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"; 
} 
+0

私はそれがうまくいないかどうかを確認する必要があるので、私はそれを以下のように変更しました:if(!header([Content-Type '])&& 0 strncmp($ headers [' Content-Type '] 、 'image /'、6)){ エコー "無効"; exit; }は残念ながらうまくいきません... – weltschmerz

+0

逆は '!isset($ headers ['Content-Type'])|| 0!== strncmp($ headers ['Content-Type']、 'image /'、6) ' –

+0

私は間違っていました。それは魅力のように働く。この逆は、明らかに次のようにしか動作しません:if(!isset($ headers ['Content-Type'])&& 0 === strncmp($ headers ['Content-Type']、 'image /'、6)) – weltschmerz

0
$headers = @get_headers($imageurl); 

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

...そのうちの一つは、そうあなたはおそらく、(ヘッダを取得するときにHEADリクエストを使用したいと思うでしょう

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