PHP — как очистить домен от лишнего

Делюсь php кодом, который писал для себя, чтобы вывести иконки к сайтам. Вывод иконок на сайте в зависимости от имени домена. Очистка адреса сайта от всего лишнего.

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

Очищаем домен от лишнего

Для примера возьмём адрес моего сайта, но предположим что сайты могут быть разные:

https://ploshadka.net/

Очистим его от всего постороннего, кроме названия домена. Для этого будем использовать очистку от лишних элементов с помощью функции str_replace().

$clean_https = str_replace('https://', '', $url);

$clean_http = str_replace('http://', '', $clean_https);

$clean_www = str_replace('www.', '', $clean_http);

В результате таких манипуляций останется такой адрес:

ploshadka.net/

Выдернем из него отдельные буквенные сочетания (слова):

preg_match_all('/(\w+)/', $clean_www, $clean_name);

Теперь мы можем вывести, как отдельно название домена (ploshadka):

echo $clean_name[0][0];

так и полное название сайта без лишней атрибутики (ploshadka.net):

echo $clean_name[0][0] .'.' .$clean_name[0][1]

Делаем проверку на наличие изображения

Из получившихся данных выше создадим переменную с адресом изображения:

$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>';
}

Весь код

// Очищаем домен от всего лишнего кроме названия домена
$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 — как очистить домен от лишнего

  • Аватар
    YmNIK13
    27.04.2020 в 19:19

    Есть попроще методы в php из коробки 🙂

    К примеру parse_url()

       $ulr =  parse_url('https://ploshadka.net/');


    /* вернет
    [
      "scheme" => "https"
      "host" => "ploshadka.net"  - вот тут останется www если есть
      "path" => "/"
    ]

    */

    К тому же крайний слеш умеет убирать и trim(), просто передаешь вторым параметром от чего надо чистить начало и конец строки. Ну или чтоб вообще быстро то этот rtrim() — то этот

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"PHP — как очистить домен от лишнего"
Если вам нужно добавить участок кода ставьте его между тегами <code></code>