Jak získat doménu z adresy URL v jazyce PHP
Extrakce domény z adresy URL je v jazyce PHP běžnou potřebou, ať už jde o ověřování vstupů, filtrování analytických dat nebo zpracování přesměrování. Jazyk PHP nabízí několik spolehlivých způsobů, jak to provést, od vestavěných funkcí až po regulární výrazy. Tento průvodce vysvětluje všechny praktické přístupy, včetně toho, jak v případě potřeby odstranit subdomény.
Používání stránek parse_url() (Doporučeno)
Nejjednodušší a nejspolehlivější metodou je použití vestavěného nástroje PHP parse_url() která rozdělí adresu URL na jednotlivé složky.
Příklad:
<?php$url = 'https://blog.example.co.uk/article?id=10'; $host = parse_url($url, PHP_URL_HOST);echo $host; // Output: blog.example.co.uk
Tím se načte plný hostitel (včetně subdomén). Je ideální pro obecné případy použití, kdy potřebujete celý název hostitele.
Odstranění subdomén pro získání kořenové domény
Pokud potřebujete pouze kořenovou doménu (např, example.co.uk místo blog.example.co.uk), můžete hostitele rozdělit a inteligentně extrahovat poslední dvě nebo tři části.
Příklad:
<?php$url = 'https://blog.example.co.uk';$host = parse_url($url, PHP_URL_HOST); $parts = explode('.', $host);$count = count($parts); if ($count > 2) { $domain = $parts[$count - 2] . '.' . $parts[$count - 1];} else { $domain = $host;} echo $domain; // Output: example.co.uk
To funguje dobře pro většinu standardních doménových struktur, ačkoli domény nejvyšší úrovně s kódem země (jako např. .co.uk, .com.au) může být v závislosti na vašich požadavcích zapotřebí další manipulace.
Použití regulárních výrazů (rychlé, ale omezené)
Pro jednoduchou extrakci můžete použít také regex, který však není tak spolehlivý pro složité domény.
Příklad:
<?php$url = 'https://store.blog.example.com/path';preg_match('/^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?([^:\/\n]+)/', $url, $matches); echo $matches[1]; // Output: store.blog.example.com
Můžete dále zpracovávat $matches[1] pomocí dřívější logiky odstraňování subdomén izolovat kořenovou doménu.