PHP kullanarak, nasıl ben bunu bir görüntü olup olmadığını belirleyebilirsiniz, bir URL verilir?
URL için bağlam yok - bu sadece bir düz metin dosyası, ya da kendi başına belki sadece bir dize ortasında.
Ben bu sayfada birçok URL'ler için denebilecek kadar yüksek yük (örneğin URL içeriğini okumak) istemiyorum. Bu kısıtlama göz önüne alındığında, tüm görüntüler tespit esastır değil, ama oldukça iyi bir tahmin istiyorum.
Şu anda sadece dosya uzantısı arıyorum, ama bu daha iyi bir yolu var olmalıdır gibi hissediyor.
İşte ben şu anda ne var:
function isImage( $url )
{
$pos = strrpos( $url, ".");
if ($pos === false)
return false;
$ext = strtolower(trim(substr( $url, $pos)));
$imgExts = array(".gif", ".jpg", ".jpeg", ".png", ".tiff", ".tif"); // this is far from complete but that's always going to be the case...
if ( in_array($ext, $imgExts) )
return true;
return false;
}
Edit: durumunda burada Emil H'leri cevabını tekniği kullanılarak nihai işlevi herkesten yararlıdır:
function isImage($url)
{
$params = array('http' => array(
'method' => 'HEAD'
));
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp)
return false; // Problem with url
$meta = stream_get_meta_data($fp);
if ($meta === false)
{
fclose($fp);
return false; // Problem reading data from url
}
$wrapper_data = $meta["wrapper_data"];
if(is_array($wrapper_data)){
foreach(array_keys($wrapper_data) as $hh){
if (substr($wrapper_data[$hh], 0, 19) == "Content-Type: image") // strlen("Content-Type: image") == 19
{
fclose($fp);
return true;
}
}
}
fclose($fp);
return false;
}