[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как получить иконку сайта?
Richik
Я делаю так:

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

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

user posted image

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

Пример отработки кода:
Иконка третьего столбца добывается из "login.live.com", и отрабатывает корректно в обоих случаях.
Последние иконки получены из домена "live.com" и в место иконки в первой строке пустой квадрат (тот же эффект повторяется если иконка не "favicon.ico" для других сайтов.).

Кроме всего прочего расширение иконки некоторых сайтов, подчас, не ico =(.
Изначально список доменов неизвестен! Необходимо универсальное решение, на 100% рабочее.

У кого какие мысли об этом? Может у кого-то есть готовый PHP скрипт?
vital
Ну я бы пробовал просто искать картинку /favicon.ico если таковой нету, то парсите страницу сайта, картинка ставится как-то так
<link rel="shortcut icon" href="/favicon.ico"type="image/x-icon">

Если такой строки нету, то значит и фавикона нету и выводить какую-нить дефолтную картинку как делает гугл.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Серега187
Делаю так:
Создаю в фотошопе картинку, сохраняю в формате .ico, подключаю в хедере
<link rel="shortcut icon" href="/Favicon.ico" type="image/x-icon">
<link
rel="icon" href="/Favicon.ico" type="image/x-icon">

и все. Только может не правильно, но работает...
YVSIK
Цитата (vital @ 3.07.2014 - 02:10)
то значит и фавикона нету

так не бывает если фавиконка есть на сайте значит она есть.
она попросту может не лежать не в корне))

_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
killer8080
Цитата (YVSIK @ 3.07.2014 - 10:15)
так не бывает если фавиконка есть на сайте значит она есть.
она попросту может не лежать не в корне))

ты бы хоть прочитал пост внимательно, прежде чем комментировать.
Richik
Цитата (vital @ 3.07.2014 - 02:10)
Ну я бы пробовал просто искать картинку /favicon.ico если таковой нету, то парсите страницу сайта, картинка ставится как-то так
<pre class="sh_sourceCode" rel="html"><span class="sh_keyword"><link</span> <span class="sh_att">rel</span><span class="sh_symbol">=</span><span class="sh_string">"shortcut icon"</span> <span class="sh_att">href</span><span class="sh_symbol">=</span><span class="sh_string">"/favicon.ico"</span><span class="sh_att">type</span><span class="sh_symbol">=</span><span class="sh_string">"image/x-icon"</span><span class="sh_keyword">></span>
</pre>
Если такой строки нету, то значит и фавикона нету и выводить какую-нить дефолтную картинку как делает гугл.

Сделал как вы посоветовали, вот что получилось:

$addr = "http://".$url.'/favicon.ico';
$rob = @fopen($addr, 'r');
if (!$rob)
echo '<img src="favicon.ico">';
else
echo '<img src='.$addr.'>';
@fclose($addr);

Отрабатывает как надо,
user posted image
но страница стала тяжелее загружаться. Может необходимо как-то изменить код?
vital
fopen($addr, 'r')

Вот этим вот вы скачиваете себе картинку на сервер, это плохая идея.
Собственно первая ссылка из гугла (узнать наличие файла на удаленном сервере)- http://habrahabr.ru/post/50846/ все показывает.

Только как обычно на хабре стоит почитать не статью, а комментарии. Я бы советовал curl(выставив в RETURN_TRANSFER в false), или вообще руками послать какой-нить http HEAD запрос.

А, и еще - для всех популярных сайтов в вашем случае было бы удобно эти картинки кешировать у себя на сервере, дабы не тратить лишнее время на загрузку страницы.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
tjomamokrenko
Цитата (Richik @ 4.07.2014 - 00:11)
Может необходимо как-то изменить код

# Возвращает URL картинки
function getFavicon($site_url) {
if ($site_url[strlen($site_url)-1] != '/') {
$site_url .= '/';
}

$headers = @get_headers($site_url . 'favicon.ico');
if (preg_match('/200/', $headers[0])) {
return $site_url . 'favicon.ico';
}

$parse_result = parse_url($site_url);

return 'http://www.google.com/s2/favicons?domain=' . $parse_result['host'];
}

Gist https://gist.github.com/tjomamokrenko/4d5e1f51bb8e24e4ed2e
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.