Získání názvu domény v jazyce PHP

Výpis domény v jazyce PHP: Z URL, e-mailu nebo aktuální stránky Při vývoji backendu v jazyce PHP je extrakce názvů domén často nutná pro úlohy, jako je vytváření kanonických adres...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

26. 11. 2025

Získání názvu domény v jazyce PHP

Výpis domény v jazyce PHP: Z URL, e-mailu nebo aktuální stránky

Při vývoji backendu v jazyce PHP je extrakce názvů domén často nutná pro úlohy, jako je vytváření kanonických adres URL, rozbor odkazů nebo e-mailů zadaných uživatelem, směrování, protokolování nebo ověřování. V tomto článku se budeme zabývat tím, jak získat názvy domén v jazyce PHP v několika reálných kontextech: z aktuálního požadavku, z řetězce URL nebo z e-mailové adresy. Zabýváme se také tím, jak zpracovat schéma (http/https) a volitelně odstranit subdomény, abychom získali "základní" nebo registrovatelnou doménu.

Získání domény aktuální stránky

Chcete-li získat doménu použitou v aktuálním požadavku, tedy adresu webu, na kterém běží váš kód PHP, můžete se spolehnout na funkci PHP $_SERVER superglobální proměnné:

$scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'] ?? $_SERVER['SERVER_NAME'];
$domain = $scheme . '://' . $host;
echo $domain;

Vysvětlení:

  • $_SERVER['HTTP_HOST'] uvádí hlavičku hostitele odeslanou klientem (může obsahovat port).
  • Jako záložní řešení, $_SERVER['SERVER_NAME'] lze použít, pokud HTTP_HOST není nastaven.
  • Zjistíme schéma (HTTPS nebo HTTP) a sestavíme úplnou adresu URL včetně protokolu.

Tento přístup poskytuje přesnou doménu (a případně port), kterou uživatel použil k vyžádání stránky. Běžně se používá pro generování kanonických adres URL nebo přesměrování.

Bezpečnostní poznámka: Protože HTTP_HOST je odvozena ze záhlaví poskytnutého klientem, lze ji podvrhnout. U úloh citlivých na zabezpečení (ověřování, generování tokenů, řízení přístupu) se vyhněte důvěře v tyto nástroje. HTTP_HOST. Místo toho použijte pevnou konfigurační hodnotu nebo název řízený serverem.

Extrakce domény z řetězce URL

Pokud máte k dispozici adresu URL (z uživatelského vstupu, konfigurace, referenčních dat atd.) a chcete extrahovat její doménu, vestavěná funkce PHP parse_url() je standardní nástroj:

$url = 'https://www.example.com/path/page.php?foo=bar';
$host = parse_url($url, PHP_URL_HOST);
echo $host; // e.g. "www.example.com"

parse_url() analyzuje adresu URL na složky (schéma, hostitel, cesta, dotaz, fragment atd.). Pomocí PHP_URL_HOST vrátí složku hostitele (domény) jako řetězec.

Tato funkce funguje spolehlivě, pokud je vstupem úplná a platná adresa URL.

Omezení a výhrady:

  • Pokud adresa URL neobsahuje schéma (např. "example.com/path"), parse_url() může chybně interpretovat řetězec jako relativní cestu a hostitele se nepodaří extrahovat.
  • Pokud je adresa URL chybně vytvořena nebo není správně zakódována, může parsování přinést neočekávané výsledky nebo vrátit hodnotu. null.

Proto je při práci s uživatelským nebo externím vstupem vhodné nejprve ověřit nebo normalizovat adresu URL (například tím, že se ujistíte, že má schéma), než zavoláte parse_url().

Získat doménu bez subdomény

Ve výchozím nastavení, parse_url() vrátí celého hostitele včetně všech subdomén. Například z https://sub.www.example.co.uk, získáte sub.www.example.co.uk. Často chcete pouze "základní" nebo "registrovatelnou" doménu (např. example.co.uk).

Naivní způsob odstranění subdomén může vypadat takto:

$host = parse_url($url, PHP_URL_HOST);
$host = preg_replace('/^www\./i', '', $host);

Tím se řeší běžný případ "www." předpona. Tento přístup však selhává, když:

  • Subdoména není "www" (např. api.example.com, blog.example.co.uk).
  • Doména má vícedílnou TLD (např. .co.uk, .org.au), přičemž pouhé převzetí posledních dvou značek může být nesprávné.
  • Existují hlubší subdomény (např. a.b.c.example.com).

Kvůli těmto problémům není spolehlivé získání základní domény z libovolných hostitelů triviální. Plně korektní řešení vyžaduje znalost veřejného seznamu přípon (všech platných TLD a vícedílných TLD). Bez toho bude jakákoli regexová nebo heuristická metoda křehká.

Pokud je ve vaší aplikaci přesná extrakce domény kritická, použijte dobře udržovanou knihovnu s veřejnou příponovou orientací. V opačném případě může postačit heuristický přístup, ale buďte si vědomi jeho omezení.

Extrakce domény z e-mailové adresy

E-mailové adresy mají jednoduchou strukturu: local-part@domain. Získání části domény v jazyce PHP:

$email = 'user@example.com';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$domain = explode('@', $email)[1];
echo $domain; // "example.com"
} else {
// invalid email
}

Případně:

$domain = substr(strstr($email, '@'), 1);

Důležité body:

  • Nejprve ověřte formát e-mailu pomocí filter_var(..., FILTER_VALIDATE_EMAIL) před extrakcí.
  • Tato metoda vrací přesně to, co je za @. Pokud je e-mail nestandardní (obsahuje více @nebo další údaje), může být vyžadována další validace nebo sanitace.

Tato metoda je jednoduchá a funguje dobře, pokud důvěřujete zadávání e-mailů nebo je ověřujete.

Upozornění, okrajové případy a osvědčené postupy

  • Odstranění subdomény je náchylné k chybám. Regex nebo naivní rozdělení na "." může selhat u víceúrovňových TLD nebo složitých hostitelů. Pokud záleží na přesnosti, použijte přístup založený na veřejných příponách.
  • Data poskytovaná serverem (zejména HTTP_HOST) pochází ze záhlaví klienta, vyhněte se důvěře v něj, pokud jde o kód kritický z hlediska zabezpečení.
  • Před zpracováním vždy ověřte a upravte externí vstup (adresy URL a e-maily). Před použitím adresy URL se například ujistěte, že má schéma a je správně formulovaná. parse_url().
  • Dávejte pozor na internacionalizované názvy domén (IDN). Operace s prostým řetězcem nebo regexem nemusí zvládnout doménová jména, která nejsou v kódování ASCII; v závislosti na případu použití může být nutné zpracování IDN/Punycode.

Závěr

Jazyk PHP poskytuje účinné integrované nástroje pro extrakci názvů domén v typických případech použití na webu:

  • Použijte $_SERVER['HTTP_HOST'] (s detekcí schématu) pro aktuální doménu požadavku.
  • Použijte parse_url() analyzovat řetězec URL a extrahovat hostitele.
  • Použijte jednoduchou manipulaci s řetězci nebo explode('@') extrahovat doménu z e-mailové adresy.
  • Pro extrakci registrovatelné domény (bez subdomén) se spoléhejte na knihovnu s veřejnou příponovou znalostí, nikoli na naivní řetězcové hacky.

Zatímco jednoduché případy jsou snadné, okrajové případy (subdomény, víceúrovňové domény nejvyšší úrovně, chybný vstup) vyžadují pečlivé zpracování. Chcete-li získat robustní kód připravený k výrobě, ověřujte vstupy a dávejte přednost parsování založenému na knihovně, pokud záleží na správnosti domény.

Původní článek publikoval Nabil Hassen.

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google