у меня есть некоторая проблема.
Я должен проверить, что URL является URL изображения или нет? Как я могу сделать это?
Пример: если я поместил http://www.google.com/, не URL изображения.
но если я поместил http://www.google.com/profiles/c/photos/private/AIbEiAIAAABECK386sLjh92M4AEiC3ZjYXJkX3Bob3RvKigyOTEzMmFmMDI5ODQ3MzQxNWQxY2VlYjYwYmE2ZTA4YzFhNDhlMjBmMAEFQ7chSa4PMFM0qw02kilNVE1Hpw, или http://www.hoax-slayer.com/images/worlds-strongest-dog.jpg, URL изображения.
Если вы хотите быть абсолютно уверены, и ваш PHP включен для удаленных соединений, вы можете просто использовать
getimagesize('url');
Если он возвращает массив, это тип изображения, распознанный PHP, даже если расширение изображения не находится в url (согласно вашей второй ссылке). Вы должны помнить, что этот метод будет устанавливать удаленное соединение для каждого запроса, поэтому, возможно, кэшируйте url, которые вы уже проверили в базе данных, чтобы уменьшить количество соединений.
Вы можете отправить запрос HEAD на сервер, а затем проверить Content-type. Таким образом, вы, по крайней мере, будете знать, что сервер «думает», что это за тип.
я думаю, что идея в том, чтобы получить содержимое заголовка url через curl
и проверить заголовки
После вызова curl_exec()
для получения веб-страницы, вызовите curl_getinfo()
для получения строки типа содержимого из HTTP заголовка
посмотрите как это сделать в этой ссылке:
http://nadeausoftware. com/articles/2007/06/php_tip_how_get_web_page_content_type#IfyareusingCURL
$ext = strtolower(end(explode('.', $filename)));
switch($ext)
{
case 'jpg':
///Blah
break;
}
Жесткая версия (просто пытаюсь)
//Turn off E_NOTICE reporting first
if(getimagesize($url) !== false)
{
//Image
}