html_entity_decode

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

html_entity_decodeConvertit les entités HTML à leurs caractères correspondant

Description

html_entity_decode(string$string, int$flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string$encoding = null): string

html_entity_decode() est la fonction contraire de htmlentities() : elle convertit les entités HTML de la chaîne string en leurs caractères correspondant.

De façon plus explicite, cette fonction décode toutes les entités (incluant les entités numériques) qui 1) sont nécessairement valides pour le type de document choisi - i.e., pour XML, cette fonction ne décode pas les entités nommées qui peuvent être définies dans une DTD - et 2) et dont le caractère ou les caractères sont dans le jeu de caractères codé avec l'encodage choisi et sont autorisés dans le type de document choisi. Toutes les autres entités sont laissées telle que.

Liste de paramètres

string

La chaîne d'entrée.

flags

Un masque d'un ou plusieurs drapeaux suivants, qui spécifient la façon dont doivent être gérés les guillemets et quel type de document doit être utilisé. Par défaut, c'est ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.

Constantes disponibles pour flags
ConstanteDescription
ENT_COMPATConvertit les guillemets doubles et ignore les guillemets simples.
ENT_QUOTESConvertit les guillemets doubles et les guillemets simples.
ENT_NOQUOTESNe convertit aucun guillemet.
ENT_SUBSTITUTE Remplace les séquences de code invalide avec un caractère de remplacement Unicode U+FFFD (UTF-8) ou &#FFFD; (sinon) au lieu de retourner une chaîne vide.
ENT_HTML401 Gère le code comme étant du HTML 4.01.
ENT_XML1 Gère le code comme étant du XML 1.
ENT_XHTML Gère le code comme étant du XHTML.
ENT_HTML5 Gère le code comme étant du HTML 5.
encoding

Un argument optionnel définissant l'encodage utilisé lors de la conversion des caractères.

Si omis, la valeur par défaut du paramètre encoding est la valeur de l'option de configuration default_charset.

Malgré le fait que cet argument soit techniquement optionnel, vous êtes vivement encouragé à spécifier la valeur correcte pour votre code si l'option de configuration default_charset a été définie de façon incorrecte pour l'entrée fournie.

Les jeux de caractères suivants sont supportés :

Jeux de caractères supportés
Jeux de caractèresAliasDescription
ISO-8859-1ISO8859-1 Europe occidentale, Latin-1.
ISO-8859-5ISO8859-5 Jeu de caractère cyrillique rarement utilisé (Latin/Cyrillic).
ISO-8859-15ISO8859-15 Europe occidentale, Latin-9. Dispose du signe Euro, des caractères spéciaux français et finlandais, qui manquent au Latin-1 (ISO-8859-1).
UTF-8  Unicode 8 bits multioctets, compatible avec l'ASCII
cp866ibm866, 866 Jeu de caractères Cyrillique spécifique à DOS.
cp1251Windows-1251, win-1251, 1251 Jeu de caractères Cyrillic spécifique à Windows.
cp1252Windows-1252, 1252 Jeu de caractères spécifique de Windows pour l'Europe occidentale.
KOI8-Rkoi8-ru, koi8r Russe.
BIG5950 Chinois traditionnel, principalement utilisé à Taïwan.
GB2312936 Chinois simplifié, officiel.
BIG5-HKSCS  Big5 avec les extensions de Hong Kong, chinois traditionnel.
Shift_JISSJIS, SJIS-win, cp932, 932 Japonais
EUC-JPEUCJP, eucJP-win Japonais
MacRoman  Jeu de caractères utilisé par Mac OS.
''  Une chaîne vide active la détection de l'encodage depuis un script (multioctet Zend), default_charset et la locale courante (voir nl_langinfo() et setlocale()), dans cet ordre. Non recommandé.

Note: Les autres jeux de caractères ne sont pas reconnus. L'encodage par défaut sera utilisé à la place et une alerte sera émise.

Valeurs de retour

Retourne la chaîne décodée.

Historique

VersionDescription
8.1.0flags à changé de ENT_COMPAT à ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
8.0.0encoding est désormais nullable.

Exemples

Exemple #1 Décoder des entités HTML

<?php
$orig
= 'J\'ai "sorti" le <strong>chien</strong> tout à l\'heure';
$a = htmlentities($orig);
$b = html_entity_decode($a);

echo
$a; // J'ai &quot;sorti&quot; le &lt;strong&gt;chien&lt;/strong&gt; tout &amp;agrave; l'heure
echo $b; // J'ai "sorti" le <strong>chien</strong> tout à l'heure

?>

Notes

Note:

Vous pourriez vous demander pourquoi trim(html_entity_decode('&nbsp;')); ne réduit pas la chaîne à la chaîne vide. C'est parce que l'entité &nbsp; n'est pas un code ASCII 32 (qui serait supprimé par trim()), mais un code ASCII 160 (0xa0) dans l'encodage par défaut ISO 8859-1.

Voir aussi

To Top