Jak číst a získávat parametry URL v jazyce PHP

Získávání a extrakce parametrů dotazu URL v PHP Při vytváření webových aplikací PHP je velmi časté, že je třeba číst hodnoty předávané prostřednictvím adresy URL ("řetězec dotazu"...

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

24. 09. 2025

Jak číst a získávat parametry URL v jazyce PHP

Získávání a extrakce parametrů dotazu URL v PHP

Při vytváření webových aplikací PHP je velmi časté, že je třeba číst hodnoty předávané prostřednictvím adresy URL ("řetězec dotazu" nebo parametry GET). V tomto příspěvku se budeme zabývat:

  • Jaké parametry URL (řetězce dotazů) jsou
  • Jak je PHP zpřístupňuje
  • Jak analyzovat parametry z řetězce URL
  • Užitečné pomocné funkce
  • Okrajové případy, zabezpečení a osvědčené postupy

Co jsou to parametry URL / řetězce dotazů?

Parametr URL (nebo řetězec dotazu) je část adresy URL za znakem ? s dvojicemi klíč/hodnota oddělenými znakem &. Například:

https://example.com/search.php?q=php&lang=en&page=2

Zde:

  • q = php
  • lang = en
  • page = 2

Tradičně se k nim přistupuje prostřednictvím HTTP GET. Umožňují předávat malé množství dat v samotné adrese URL.

vestavěný mechanismus PHP: $_GET

Nejjednodušší a nejběžnější způsob přístupu k parametrům URL v jazyce PHP je prostřednictvím příkazu superglobal $_GET. Jedná se o asociativní pole, které PHP vyplňuje z řetězce dotazu aktuálního požadavku.

<?php
// Suppose URL is: http://mysite.com/page.php?user=alice&age=30
 
$user = $_GET['user']; // “alice”
$age = $_GET['age']; // “30”
 
// Better: check existence
if (isset($_GET['user'])) {
$user = $_GET['user'];
} else {
$user = null;
}
?>

Můžete také použít nulový koalescenční operátor (PHP 7+):

$user = $_GET['user'] ?? null;

S filtrováním:

$user = filter_input(INPUT_GET, 'user', FILTER_SANITIZE_STRING);

Poznámky:

  • $_GET funguje vždy, když je přítomen řetězec dotazu, bez ohledu na metodu požadavku.
  • Vždy ověřujte a upravujte data.
  • Použijte isset(), ??, nebo filter_input() abyste se vyhnuli upozorněním.
  • Pole (?arr[]=foo&arr[]=bar) se zpracovávají automaticky.

Extrakce z libovolného řetězce URL

Někdy je třeba analyzovat parametry z řetězce URL, nikoli z aktuálního požadavku. V takovém případě:

parse_url() + parse_str()

<?php
$url = "https://example.com/path?foo=bar&baz=qux&arr[]=one&arr[]=two";
 
$parts = parse_url($url);
 
if (!empty($parts['query'])) {
parse_str($parts['query'], $queryParams);
// ["foo"=>"bar", "baz"=>"qux", "arr"=>["one", "two"] ]
} else {
$queryParams = [];
}
?>

Nebo kratší:

parse_str(parse_url($url, PHP_URL_QUERY), $queryParams);

Upozornění:

  • Nevolejte parse_str() bez druhého argumentu znečistí lokální obor.
  • Mezery/tečky v klávesách se změní na podtržítka.
  • max_input_vars může omezit počet analyzovaných parametrů.

Alternativa pro Regex

if (preg_match("/[?&]foo=([^&]+)/", $url, $matches)) {
$fooVal = urldecode($matches[1]);
}

Ten je však křehký, přednost mají vestavby.

Získání úplné aktuální adresy URL

Pokud potřebujete kompletní aktuální adresu URL požadavku:

<?php
function getCurrentUrl(): string {
$scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http";
$host = $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI'];
return $scheme . "://" . $host . $uri;
}
 
$current = getCurrentUrl();
echo $current;
?>

To dává něco jako:

https://example.com/search.php?lang=en&q=php

Pomocné funkce

<?php
function getQueryParams(?string $url = null): array {
if ($url === null) {
$qs = $_SERVER['QUERY_STRING'] ?? '';
parse_str($qs, $params);
return $params;
}
 
$parts = parse_url($url);
if (empty($parts['query'])) {
return [];
}
 
parse_str($parts['query'], $params);
return $params;
}
 
function getParam(string $key, ?string $url = null, $default = null) {
$params = getQueryParams($url);
return $params[$key] ?? $default;
}
?>

Použití:

$params = getQueryParams("https://example.com/?a=1&b=2");
$email = getParam('email', null, '');

Okrajové případy a osvědčené postupy

Obavy Tip
Chybějící klíče Použijte isset(), ??, nebo array_key_exists.
Kódování URL Automaticky zpracovává PHP.
Opakované klávesy parse_str() zachová poslední hodnotu, pokud [] je použita syntaxe.
Mnoho parametrů Omezeno na max_input_vars.
Zabezpečení Vždy ověřujte a dezinfikujte.
Špatně formulované adresy URL Ochrana před neplatnými vstupy.

Souhrn

  1. Použijte $_GET pro aktuální parametry požadavku.
  2. Použijte parse_url() + parse_str() pro libovolné adresy URL.
  3. Zapouzdřit parsování do pomocných modulů.
  4. Vždy ověřujte a upravujte vstupní údaje.

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