htmlspecialchars_decode în PHP

Transformă înapoi în caractere entitățile create de htmlspecialchars: &lt; devine <, &amp; devine &.

Sintaxă
htmlspecialchars_decode(string $string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401): string

Ce face htmlspecialchars_decode

htmlspecialchars_decode este inversul lui htmlspecialchars. Transformă doar cele cinci entități speciale: &amp;, &lt;, &gt;, &quot; și &#039;. Alte entități, de exemplu &eacute;, rămân neschimbate; pentru ele folosește html_entity_decode.

O folosești când ai nevoie de textul original, de exemplu ca să îl scrii într-un fișier text sau într-un email simplu, nu ca să îl afișezi în pagină.

Parametri

Parametru Descriere
$string Textul cu entități.
$flags Opțional. Implicit sunt transformate înapoi și ghilimelele simple și duble.

Ce returnează

Textul cu entitățile transformate în caractere.

Exemple

Exemplul 1: Dus și întors

<?php
$original = 'Preț <b>"redus"</b> & livrare gratuită';

$sigur = htmlspecialchars($original);
echo $sigur . "\n";
echo htmlspecialchars_decode($sigur);

Rezultat

Preț &lt;b&gt;&quot;redus&quot;&lt;/b&gt; &amp; livrare gratuită
Preț <b>"redus"</b> & livrare gratuită

Exemplul 2: Doar entitățile speciale sunt transformate

<?php
echo htmlspecialchars_decode("&lt;i&gt;Caf&eacute;&lt;/i&gt; &amp; ceai");

Rezultat

<i>Caf&eacute;</i> & ceai

Greșeli frecvente

  • Afișezi în pagină rezultatul lui htmlspecialchars_decode pe un text primit de la utilizator. Codul HTML redevine activ și site-ul devine vulnerabil la XSS.

Comenzi înrudite

  • htmlspecialchars: Transformă caracterele speciale HTML în entități, ca textul să fie afișat în siguranță în pagină.
  • htmlentities / html_entity_decode: Transformă în entități HTML toate caracterele care au o entitate (é devine &eacute;). html_entity_decode face operația inversă.
  • get_html_translation_table: Returnează tabelul de conversie caracter => entitate folosit de htmlspecialchars sau htmlentities.