Как получить значок сайта с помощью PHP? - PullRequest
16 голосов
/ 18 апреля 2011

Я хочу получить запрашиваемую иконку сайта с PHP.Мне порекомендовали использовать службу favicon от Google, но она не работает.Я хочу что-то сделать самостоятельно, но не знаю, как использовать регулярные выражения.

Я нашел класс в Google, который работает в большинстве случаев, но с недопустимым уровнем ошибок.Вы можете посмотреть здесь: http://www.controlstyle.com/articles/programming/text/php-favicon/

Может кто-нибудь, пожалуйста, помогите мне в получении favicon с помощью регулярных выражений, пожалуйста?

Ответы [ 13 ]

0 голосов
/ 04 мая 2015
$url = 'http://thamaraiselvam.strikingly.com/';
$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
@$doc->loadHTML(file_get_contents($url));
$xml = simplexml_import_dom($doc);
$arr = $xml->xpath('//link[@rel="shortcut icon"]');
if (!empty($arr[0]['href'])) {
    echo "<img src=".$arr[0]['href'].">";
 }
else 
echo "<img src='".$url."/favicon.ico'>";
0 голосов
/ 29 марта 2014

Нашел эту ветку ... Я написал плагин для WordPress, который включает в себя множество вариантов получения фавиконов.Поскольку GPL-кода очень много: http://plugins.svn.wordpress.org/wp-favicons/trunk/

Позволяет запустить сервер, с которого вы можете запрашивать значки с помощью запросов xml rpc, чтобы любой клиент мог запрашивать значки.У него действительно есть структура плагинов, поэтому вы можете попробовать google, getfavicon и т. Д., Чтобы узнать, предоставляет ли один из этих сервисов что-нибудь.Если нет, то он переходит в режим извлечения значков с учетом всех статусов http (301/302/404) и делает все возможное, чтобы найти значок в любом месте.После этого он использует функции библиотеки изображений, чтобы проверить внутри файла, действительно ли это изображение и какой тип изображения (иногда неправильное расширение), и его можно подключить, чтобы вы могли добавлять его после преобразования изображений или дополнительных функций в конвейере.

http-файл извлечения выполняет некоторую логику вокруг того, что я вижу выше: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.php

, но это только часть конвейера.

может стать довольно сложным, когда вы погрузитесь в него.

0 голосов
/ 18 апреля 2011

Если вы хотите получить значок сайта с определенного сайта, вам просто нужно извлечь favicon.ico из корня их сайта. Вот так:

$domain = "www.example.com";
$url = "http://".$domain."/favicon.ico";
$icondata = file_get_contents($url);

... you can now do what you like with the icon data
...