htmlentities / html_entity_decode în PHP

Șiruri de caractere PHP 4+ (html_entity_decode: PHP 4.3+)

Transformă în entități HTML toate caracterele care au o entitate (é devine é). html_entity_decode face operația inversă.

Sintaxă
htmlentities(string $string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string $encoding = null, bool $double_encode = true): string

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 &eacute; sau € în &euro;.

html_entity_decode face inversul: transformă entitățile (&lt;, &euro;, &icirc;) î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é &amp; croissant: 12 € &lt;b&gt;azi&lt;/b&gt;
Caf&eacute; &amp; croissant: 12 &euro; &lt;b&gt;azi&lt;/b&gt;

Exemplul 2: Decodarea entităților primite de la un API

<?php
$titlu = "Pre&#539;uri &icirc;n &euro; &amp; lei &ndash; &lt;actualizat&gt;";

echo html_entity_decode($titlu);

Rezultat

Prețuri în € & lei – <actualizat>

Greșeli frecvente

  • Afișezi rezultatul lui html_entity_decode direct în pagină. Dacă textul conținea &lt;script&gt;, acum a devenit cod HTML activ. Decodează doar când ai nevoie de text simplu.
  • Aplici htmlentities de două ori și în pagină apare &amp;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.