Ce face htmlentities / html_entity_decode
htmlentities seamănă cu htmlspecialchars, dar transformă în entități nu doar & < > " ', ci orice caracter care are un nume de entitate HTML, de exemplu é în é sau € în €.
html_entity_decode face inversul: transformă entitățile (<, €, î) înapoi în caractere. Este utilă când primești text cu entități de la un API sau dintr-un flux RSS.
Pentru site-uri în UTF-8, htmlspecialchars este suficientă pentru securitate. Literele ș și ț nu au entitate cu nume în HTML 4, deci htmlentities le lasă neschimbate.
Parametri
| Parametru | Descriere |
|---|---|
$string |
Textul de transformat. |
$flags |
Opțional. Implicit sunt transformate și ghilimelele simple și duble. |
$encoding |
Opțional. Codarea textului. Implicit UTF-8. |
$double_encode |
Opțional. false nu mai transformă entitățile deja existente. |
Ce returnează
Textul cu entități HTML (respectiv cu caractere obișnuite, la html_entity_decode).
Exemple
Exemplul 1: Diferența față de htmlspecialchars
<?php
$text = "Café & croissant: 12 € <b>azi</b>";
echo htmlspecialchars($text) . "\n";
echo htmlentities($text);
Rezultat
Café & croissant: 12 € <b>azi</b>
Café & croissant: 12 € <b>azi</b>
Exemplul 2: Decodarea entităților primite de la un API
<?php
$titlu = "Prețuri în € & lei – <actualizat>";
echo html_entity_decode($titlu);
Rezultat
Prețuri în € & lei – <actualizat>
Greșeli frecvente
- Afișezi rezultatul lui
html_entity_decodedirect în pagină. Dacă textul conținea<script>, acum a devenit cod HTML activ. Decodează doar când ai nevoie de text simplu. - Aplici
htmlentitiesde două ori și în pagină apare&eacute;. Transformă textul o singură dată, la afișare.
Comenzi înrudite
htmlspecialchars: Transformă caracterele speciale HTML în entități, ca textul să fie afișat în siguranță în pagină.strip_tags: Elimină etichetele HTML și PHP dintr-un text, păstrând doar conținutul.nl2br: Adaugă eticheta <br /> înaintea fiecărei linii noi, ca rândurile să apară separat în pagina HTML.