Как получить favicon сайта по его URL на PHP/jQuery
Если на вашем сайте есть внешние ссылки (ссылки на другие ресурсы), например, в комментариях или в соответствующем разделе, типа каталога сайтов, вам может потребоваться (для более красивого оформления ссылки) получение favicon сайта, персональной его иконки.
Как это можно сделать, я сейчас подробно расскажу.
Как получить favicon сайта по его URL на PHP
В PHP основную идею реализации мы заложим в класс «DOMDocument», с помощью которого получим содержимое указанной страницы и найдем в ее коде ссылку на favicon.
Реализация:
<?php
$url = "https://www.pandoge.com"; // Ссылка на сайт
$content = new DOMDocument();
$content->strictErrorChecking = FALSE;
@$content->loadHTML(file_get_contents($url));
$xml = simplexml_import_dom($content);
$arr = $xml->xpath('//link[@rel="shortcut icon"]');
if($arr) {
echo "<img src=".$arr[0]['href']." alt='favicon'>";
}
?>
Ссылку в примере заменяете на свою.
Как получить favicon сайта по его URL на jQuery
В jQuery в качестве помощника мы воспользуемся сервисом Google, а именно – ссылкой «https://www.google.com/s2/favicons?domain=». Если мы подставим в нее нужный нам домен, то получим favicon сайта.
Реализация:
<span id="result"></span> https://www.pandoge.com
<script>
$(function() {
var link = "https://www.pandoge.com"; // Ссылка на сайт
$("#result").html('<img src="https://www.google.com/s2/favicons?domain='+link+'" alt="favicon">');
});
</script>
Где «#result» – это id элемента, в который необходимо вывести результат.
Если вы имеете блок ссылок, то можно немного автоматизировать работу скрипта:
<ul>
<li><a href="https://vk.com">https://vk.com</a></li>
<li><a href="https://www.pandoge.com">https://www.pandoge.com</a></li>
<li><a href="https://yandex.ru">https://yandex.ru</a></li>
<li><a href="https://www.google.ru">https://www.google.ru</a></li>
</ul>
<script>
$(function() {
$("ul li a[href^='http']").each(function() {
$(this).prepend('<img src="https://www.google.com/s2/favicons?domain='+this.href+'" alt="favicon">');
});
});
</script>
В таком случае ко всему блоку ссылок добавится их favicon.
Если возникли трудности в использовании одного из способов – пишите об этом в комментариях.