Делюсь php кодом, который писал для себя, чтобы вывести иконки к сайтам. Вывод иконок на сайте в зависимости от имени домена. Очистка адреса сайта от всего лишнего.
Для вывода различных иконок к доменам сначала получим фиксированное название домена, а затем по нему выведем изображение. Изображение должно иметь название домена. Для этих целей сначала очистим домен от лишних элементов. А затем проверим наличие файла изображения.
Очищаем домен от лишнего
Для примера возьмём адрес моего сайта, но предположим что сайты могут быть разные:
Очистим его от всего постороннего, кроме названия домена. Для этого будем использовать очистку от лишних элементов с помощью функции str_replace().
$clean_http = str_replace('http://', '', $clean_https);
$clean_www = str_replace('www.', '', $clean_http);
В результате таких манипуляций останется такой адрес:
Выдернем из него отдельные буквенные сочетания (слова):
Теперь мы можем вывести, как отдельно название домена (ploshadka):
так и полное название сайта без лишней атрибутики (ploshadka.net):
Делаем проверку на наличие изображения
Из получившихся данных выше создадим переменную с адресом изображения:
Присвоим другой переменной вывод этого изображения:
.'" title="logo ' .$clean_name[0][0] .'" width="10" height="10" />';
Проведем проверку на наличие этого файла на сервере, если он есть – выводим иконку и рядом с ним название сайта:
echo $img .'<span class="ploshadka.net">' . $clean_name[0][0] .'.' .$clean_name[0][1] .'</span>';
} else {
echo '<span class="ploshadka.net">...</span>';
}
Весь код
$clean_https = str_replace('https://', '', $url);
$clean_http = str_replace('http://', '', $clean_https);
$clean_www = str_replace('www.', '', $clean_http);
preg_match_all('/(\w+)/', $clean_www, $clean_name);
// Файл на сервере
$favicon_on_server = 'wp-content/img/favicon/' .$clean_name[0][0] .'.png';
$img = '<img class="news-favicon" src="' .esc_url(home_url('/')) .$favicon_on_server
.'" title="logo ' .$clean_name[0][0] .'" width="10" height="10" />';
if (file_exists($favicon_on_server)) {
echo $img .'<span class="ploshadka.net">' . $clean_name[0][0] .'.' .$clean_name[0][1] .'</span>';
} else {
echo '<span class="ploshadka.net">...</span>';
}
Есть попроще методы в php из коробки 🙂
К примеру parse_url()
/* вернет
[
"scheme" => "https"
"host" => "ploshadka.net" - вот тут останется www если есть
"path" => "/"
]
*/
К тому же крайний слеш умеет убирать и trim(), просто передаешь вторым параметром от чего надо чистить начало и конец строки. Ну или чтоб вообще быстро то этот rtrim() — то этот