Ce face urlencode / urldecode
Într-un URL, unele caractere au rol special: & separă parametrii, ? începe interogarea, / separă directoarele. Dacă o valoare conține astfel de caractere, spații sau diacritice, trebuie codată. urlencode înlocuiește fiecare caracter special cu % urmat de codul lui hexazecimal, iar spațiul cu +.
urldecode face operația inversă. De obicei nu ai nevoie de ea pentru $_GET, pentru că PHP decodează singur parametrii din URL.
Parametri
| Parametru | Descriere |
|---|---|
$string |
Textul de codat (sau de decodat, la urldecode). |
Ce returnează
Textul codat, respectiv decodat.
Exemple
Exemplul 1: Codarea unui termen de căutare
<?php
$cautare = "cafea & ceai/Iași?";
echo urlencode($cautare) . "\n";
echo "https://www.dexblog.ro/?s=" . urlencode($cautare);
Rezultat
cafea+%26+ceai%2FIa%C8%99i%3F
https://www.dexblog.ro/?s=cafea+%26+ceai%2FIa%C8%99i%3F
Exemplul 2: Decodarea
<?php
echo urldecode("cafea+%26+ceai%2FIa%C8%99i%3F");
Rezultat
cafea & ceai/Iași?
Exemplul 3: Un link cu mai mulți parametri
Fiecare valoare se codează separat. Pentru mulți parametri este mai comod http_build_query.
<?php
$oras = "Târgu Mureș";
$categorie = "pizza & paste";
echo "/restaurante?oras=" . urlencode($oras) . "&categorie=" . urlencode($categorie);
Rezultat
/restaurante?oras=T%C3%A2rgu+Mure%C8%99&categorie=pizza+%26+paste
Greșeli frecvente
- Aplici
urldecodepe valorile din$_GET. Ele sunt deja decodate, iar o a doua decodare transformă semnele+rămase în spații. - Codezi tot URL-ul, nu doar valoarea.
urlencode("https://site.ro/?a=1")strică adresa: codează și:,/și?.
Comenzi înrudite
rawurlencode / rawurldecode: Codează un text pentru URL după standardul RFC 3986: spațiul devine %20. Se folosește pentru bucățile din calea adresei.http_build_query: Transformă un tablou în textul de interogare al unui URL (a=1&b=2), cu toate valorile codate corect.parse_str: Transformă textul de interogare al unui URL (a=1&b=2) într-un tablou, cu valorile decodate.htmlspecialchars: Transformă caracterele speciale HTML în entități, ca textul să fie afișat în siguranță în pagină.