Перейти к содержимому



Получение favicon любого сайта

#1 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93
0

Отправлено 30 Июнь 2013 - 11:11

Для конкурса "Web-ошибки"

Приветствую всех читателей! Сегодня поговорим о favicons для сайтов.
Для тех, кто не в курсе, что такое favicon (взято из википедии): "Favicon (сокр. от англ. FAVorites ICON — «значок для избранного», от названия папки с закладками в MSIE) — значок веб-сайта или веб-страницы. Отображается браузером в адресной строке перед URL страницы, а также в качестве картинки рядом с закладкой, во вкладках и в других элементах интерфейса."


Так уж сложились обстоятельства, что в последнее время пришлось выполнять много работы, связанной с пользовательским интерфейсом, хотя основное направление моей деятельности все же направлено на серверную разработку.
При написании очередного скрипта - конструктора сайтов - встал вопрос об автоматическом получении favicon для любого сайта, когда добавляется на страницу ссылка с этого сайта. Чтобы Вы долго не гадали что и как, продемонстрирую скриншот.
Изображение


Все иконки для ссылок получены с помощью скрипта.
Было испробовано множество вариантов для получения удаленного файла - и через сокеты и через CURL, но ни один из способов не давал 100% результата.
В итоге был использован сервис генерации favicons от google. Функция выглядит следующим образом:

function getFavicon($url) {
				 $url = parse_url($link);
				 $domain = $url['host'];
				 $favicon = "http://www.google.com/s2/favicons?domain=".$domain;
				 return $favicon;
}

Пример использования

$favicon = getFavicon('http://google.com');

Переменная $favicon будет содержать URL изображения

Ну вот и все, друзья!
Happy coding! :)

Полный текст статьи

 

 

  • 0

#2 denis79513

denis79513
  • Пользователь
  • 56 сообщений
  • Репутация: 7

Отправлено 07 Июль 2013 - 06:47

а зачем вообще скчивать изображение?
Просто
echo '<img src="'.$site_url.'favicon.ico">';
  • 0

#3 isvetlichniy

isvetlichniy
    Topic Starter
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 07 Июль 2013 - 12:47

не для каждого сайта это можно сделать (попробуй сделать например для яндекса с помощью твоего метода <img src="'http://yandex.ru/favicon.ico">)
а еще не всегда favicon лежит в корне сайта.

а эта функция позволяет получить иконку для практически любого сайта
  • 0

#4 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 07 Июль 2013 - 16:17

isvetlichniy,
а что не так с иконкой яндекса? Она спокойно вставляется на страницу кодом
<img src="http://yandex.ru/favicon.ico" />
Когда же favicon.ico не доступен в корне сайта, то в коде должна быть строка вроде такой:
<link rel="shortcut icon" href="path_to_favicon/favicon.ico" type="image/x-icon" />

Так что особых проблем получить favicon.ico, вроде как, быть не должно.
  • 1

#5 isvetlichniy

isvetlichniy
    Topic Starter
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 11 Июль 2013 - 08:10

href="path_to_favicon/favicon.ico"

а как определить этот путь? :)
парсить страницу?

в этом и есть особеность скрипта, что он сам определяет где иконка
  • 0

#6 denis79513

denis79513
  • Пользователь
  • 56 сообщений
  • Репутация: 7

Отправлено 11 Июль 2013 - 14:56

а вы думаете этот сервис определяет где иконка? Он так же парсит страницу и если там нет кастомного пути дает ссылку на site.ru/favicon.ico.
А теперь подумайте, что лучше когда вы сами парсите страницу или делаете запрос к сервису который парсит эту страницу? Первый вариант куда быстрее, так что если сервис начнет тормозить все встанет и у вас.


  • 0


Оформление форума – IPBSkins.ru