Mail.ruПочта0Мой Мир0ОдноклассникиВКонтактеИгры0ЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как получить иконку сайта?

Un cerebro de computadora Мастер (1160), закрыт 5 лет назад
Я делаю так:

<img src="http://'.$url.'/favicon.ico">

<img src="http://www.google.com/s2/favicons?domain='.$url.'">

Оба способа отчасти работоспособны, но тот фактор что "отчасти" достаточно не приятен и неприемлем для моей задачи.


На рисунке показан результат обоих строк. Очевидно что первая строка отрабатывает корректней второй. Однако работать она будет только в том случае если иконка у сайта называется "favicon.ico" и лежит она в корне домена, что не является стопроцентным фактором.

Пример отработки кода:

Иконка третьего столбца из добывается из "login.live.com", и отрабатывает корректно.

Последний иконки получены из домена "live.com" и в место иконки в первой строке пустой квадрат.

Кроме всего прочего расширение иконки некоторых сайтов, подчас, не ico =(

Мне необходим работоспособное решение на 100%.

У кого какие мысли об этом?
Дополнен 10 лет назад
Забыл добавить, изначально список доменов неизвестен! Необходим универсальное решение. Может у кого-то есть готовый PHP скрипт?
Лучший ответ
co san Гуру (2689) 10 лет назад
открой исходный код нужной страницы обычным браузером и посмотри
на этой странице, например это
link rel="icon" href="/favicon.png"/
Остальные ответы
my 791 Профи (998) 10 лет назад
Можно загружать исходный код главной страницы и в нём искать путь к иконке. Как по мне, так логичное и работоспособное решение.
МАСТЕР Мудрец (15786) 10 лет назад
Парсер писать надо.
Скачал главную, нашел теги с иконкой, взял адрес, скачал иконку.
Я так понял, что тебе массово надо.
Metotron Искусственный Интеллект (115028) 10 лет назад
1) file_get_contents
2) preg_match('#<meta rel="[^"]*icon[^"]*" href="(.+?)"#', …)
Это я условно набросал, на самом деле href может идти перед rel, да и кавычки не всегда двойные используются, а некоторые их вообще не пишут. Тут главное понять мысль.
Похожие вопросы