Я предлагаю сделать HTTP ГОЛОВА запрос так что вам не нужно, чтобы загрузить все изображение, а затем на основе строки, возвращаемой разборе и убедитесь, что Content-Type является image/jpeg
, image/pjpeg
, image/gif
, image/png
или Аналогичное изображение Типы содержимого.
<?php
function parseImage($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
$content = curl_exec($ch);
var_dump($content);
curl_close($ch);
}
parseImage('http://sstatic.net/so/img/logo.png');
Возвращает
строка «HTTP/1.1 200 OK
Cache-Control: макс возраста = 604800
Content-Length: 3438
Content-Type : image/png
Last-Mod маньяков: Sun, 10 Jan 2010 9:14:52 GMT
Accept-Диапазоны: байт
ETag: "32741b5ed591ca1: 0"
Сервер: Microsoft-IIS/7.5
Дата Ср, 13 января 2010 20:37:47 GMT
'(длина = 256)
Content-Typ e заголовок может быть подделан, конечно .. но в 99% случаев его не будет, поэтому этот метод является надежным.
Расширение не будет сказать вам, является ли это на самом деле изображение. –