как проверить, что этот URL является URL изображения?

у меня есть некоторая проблема.

Я должен проверить, что 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 изображения.

11
задан Giffary 8 August 2010 в 08:40
поделиться

4 ответа

Если вы хотите быть абсолютно уверены, и ваш PHP включен для удаленных соединений, вы можете просто использовать

getimagesize('url');

Если он возвращает массив, это тип изображения, распознанный PHP, даже если расширение изображения не находится в url (согласно вашей второй ссылке). Вы должны помнить, что этот метод будет устанавливать удаленное соединение для каждого запроса, поэтому, возможно, кэшируйте url, которые вы уже проверили в базе данных, чтобы уменьшить количество соединений.

24
ответ дан 3 December 2019 в 01:06
поделиться

Вы можете отправить запрос HEAD на сервер, а затем проверить Content-type. Таким образом, вы, по крайней мере, будете знать, что сервер «думает», что это за тип.

11
ответ дан 3 December 2019 в 01:06
поделиться

я думаю, что идея в том, чтобы получить содержимое заголовка url через curl

и проверить заголовки

После вызова curl_exec() для получения веб-страницы, вызовите curl_getinfo() для получения строки типа содержимого из HTTP заголовка

посмотрите как это сделать в этой ссылке:

http://nadeausoftware. com/articles/2007/06/php_tip_how_get_web_page_content_type#IfyareusingCURL

3
ответ дан 3 December 2019 в 01:06
поделиться
$ext = strtolower(end(explode('.', $filename)));
switch($ext)
{
case 'jpg':
///Blah
break;
}

Жесткая версия (просто пытаюсь)

//Turn off E_NOTICE reporting first
if(getimagesize($url) !== false)
{
//Image
}
0
ответ дан 3 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: