Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Как извлечь иконку с сайта
Сообщения
assassindev

Мне надо отобразить иконку с сайта если она есть, если нету изображение по умолчанию
извлекать надо из путей site.ru/favicon.ico
favicon.png
favicon.gif
favicon.jpg
например как это сделано в http://wotop.ru
Как это сделать?

25 Дек 2016, 20:47
Jaguar

Хз о чем ты, но фавиконки делаются так
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">

26 Дек 2016, 15:05
Chizh

$url = "http://xwab.mobi/favicon.ico";
if (@fopen($url, "r")) {
echo '<img src="'. $url .'" />';
} else {
echo 'стандартный файл';
}
добавлено спустя 32 секунды:
Вариант 2:
$url = "http://xwab.mobi/favicon.ico";
$Headers = @get_headers($url);
if(strpos($Headers[0], "200")) {
echo '<img src="'. $url .'" />';
} else {
echo 'стандартный файл';
}
добавлено спустя 1 минуту:
Как пройтись по всем возможным вариантам нахождения фавиконок, думаю, хватит фантазии

26 Дек 2016, 19:38
assassindev

Chizh, так будет работать
$url= "http://xwab.mobi/favicon.ico";
$url2= "http://xwab.mobi/favicon.png";
$url3= "http://xwab.mobi/favicon.gif";


if (@fopen($url, "r")) {
echo '<img src="'. $url .'" />';
} else {
(@fopen($url2, "r");

} else {(@fopen($url3, "r"); }
else {echo 'стандартный файл';}
блин вообще забыл php надо на досге подучить все позабывал, подскажи ну ты меня понял. как то break еще делается

27 Дек 2016, 4:11
Chizh

assassindev,
# забить в массив и пройтись форичем?

$url = "http://xwab.mobi/";
$arrIco = array('favicon.ico', 'favicon.png', 'favicon.gif');
#favicon.ico по очевидным причинам лучше поместить в начале массива, дабы не гонять цикл вхолостую в большинстве случаев

$src = 'стандартный файл'; # default
foreach($arrIco as $ico){
if (@fopen($url . $ico, "r")) {
$src = '<img src="'. $url . $ico .'" />';
break; #файл найден, завершаем цикл
}
}
echo $src;
_________________________
Ты, видимо, пытаешься предложить конструкцию elseif.
if(проверка файла 1){}
elseif(проверка файла 2){}
elseif(проверка файла 3){}
else{стандартный файл}

27 Дек 2016, 21:24
assassindev

Chizh, Спасибо за ответ, да именно elseif хотел так сделать, так ведь прокатит?

28 Дек 2016, 0:17
Chizh

assassindev, скажем, работать будет.

28 Дек 2016, 10:00
TOOZ

Если извратится, можно вообще это дело на клиентскую сторону переложить.

<img onerror="this.src = 'адрес по умолчанию'" src="сайт.ру/favicon.ico">

У тега img есть событие onerror которое срабатывает если произошла ошибка, и в таком случае мы ставим дефолтную картинку. Если все ок, то загрузится фавиконка с сайта.

Пример: https://jsfiddle.net/p3qqs6bv/

Кстати, таким же методом проверяют залогинен пользователь в какой то соц. сети или нет без его ведома. Ссылаются на картинку которая может быть видна только авторизованным пользователям, если она загрузилась - значит юзер залогинен, если сработал onerror то наоборот.

30 Дек 2016, 17:21
Ответить на тему