Ce face parse_url
parse_url desface o adresă web și returnează un tablou cu cheile scheme, host, port, user, pass, path, query și fragment. Apar doar componentele prezente în URL.
Cu al doilea parametru ceri o singură componentă, de exemplu PHP_URL_HOST sau PHP_URL_QUERY. Atunci rezultatul este direct textul (sau null dacă acea parte lipsește).
parse_url nu verifică dacă URL-ul este valid. Returnează false doar pentru adrese foarte stricate. Pentru validare folosește filter_var cu FILTER_VALIDATE_URL.
Parametri
| Parametru | Descriere |
|---|---|
$url |
Adresa de analizat. |
$component |
Opțional. Una dintre constantele PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY, PHP_URL_FRAGMENT. |
Ce returnează
Un tablou cu componentele, textul (sau numărul portului) când ceri o singură componentă, null dacă acea componentă lipsește, sau false pentru un URL grav stricat.
Exemple
Exemplul 1: Toate componentele
<?php
$url = "https://ana:secret@www.dexblog.ro:8080/invata/php/?q=date&p=2#exemple";
print_r(parse_url($url));
Rezultat
Array
(
[scheme] => https
[host] => www.dexblog.ro
[port] => 8080
[user] => ana
[pass] => secret
[path] => /invata/php/
[query] => q=date&p=2
[fragment] => exemple
)
Exemplul 2: O singură componentă
<?php
$url = "https://www.dexblog.ro/invata/php/?q=date";
echo parse_url($url, PHP_URL_HOST) . "\n";
echo parse_url($url, PHP_URL_PATH) . "\n";
var_dump(parse_url($url, PHP_URL_FRAGMENT));
Rezultat
www.dexblog.ro
/invata/php/
NULL
Exemplul 3: Este un link extern?
<?php
$linkuri = ["https://www.dexblog.ro/contact/", "https://exemplu.com/pagina", "/despre/"];
foreach ($linkuri as $link) {
$domeniu = parse_url($link, PHP_URL_HOST);
$extern = $domeniu !== null && $domeniu !== "www.dexblog.ro";
echo $link . " => " . ($extern ? "extern" : "intern") . "\n";
}
Rezultat
https://www.dexblog.ro/contact/ => intern
https://exemplu.com/pagina => extern
/despre/ => intern
Greșeli frecvente
- Folosești
parse_urlca să validezi un URL introdus de utilizator. Funcția acceptă și texte care nu sunt adrese reale. Validează cufilter_var($url, FILTER_VALIDATE_URL). - Accesezi
$parti["port"]sau$parti["query"]fără să verifici. Cheile lipsesc când URL-ul nu are acele părți și primești unWarning. Folosește$parti["query"] ?? "".
Comenzi înrudite
parse_str: Transformă textul de interogare al unui URL (a=1&b=2) într-un tablou, cu valorile decodate.http_build_query: Transformă un tablou în textul de interogare al unui URL (a=1&b=2), cu toate valorile codate corect.filter_var: Validează sau curăță o valoare: email, număr întreg, URL, adresă IP, valoare booleană.urlencode / urldecode: Codează un text ca să poată fi pus în siguranță într-un URL, ca valoare a unui parametru (după ?).