urlencode / urldecode în PHP

URL și HTTP PHP 4+

Codează un text ca să poată fi pus în siguranță într-un URL, ca valoare a unui parametru (după ?).

Sintaxă
urlencode(string $string): string

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 urldecode pe 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ă.