(PHP 4 >= 4.3.0, PHP 5)
html_entity_decode — Convertit toutes les entités HTML en caractères normaux
html_entity_decode() est la fonction contraire de htmlentities() : elle convertit les entités HTML de la chaîne string en caractères normaux.
Le paramètre optionnel quote_style vous permet de définir ce qu'il adviendra des guillemets simples et doubles. Ce paramètre prend l'une des valeurs suivantes (et la valeur par défaut est ENT_COMPAT ) :
Tableau 310. Constantes disponibles pour quote_style
Constante | Description |
---|---|
Le jeu de caractères ISO-8859-1 est utilisé par défaut, comme paramètre charset . Ce paramètre permet de choisir le jeu de caractères utilisé dans la conversion.
Les jeux de caractères suivants sont disponibles et supportés par PHP 4.3.0 et plus récent.
Tableau 311. Jeux de caractères supportés
Jeux de caractères | Alias | Description |
---|---|---|
Note: Les autres jeux de caractères ne sont pas reconnus, et le ISO-8859-1 sera utilisé à la place.
Note: Cette fonction ne supporte pas les jeux de caractères multi-octets dans PHP < 5.
Exemple 2585. 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 "sorti" le <strong>chien</strong> tout &agrave; l'heure
echo
$b
;
// J'ai "sorti" le <strong>chien</strong> tout à l'heure
// Pour les utilisateurs ayant des versions antérieures à PHP 4.3.0 :
function
unhtmlentities
(
$string
)
{
// Remplace les entités numériques
$string
=
preg_replace
(
'~&#x([0-9a-f]+);~ei'
,
'chr(hexdec("\\1"))'
,
$string
);
$string
=
preg_replace
(
'~&#([0-9]+);~e'
,
'chr("\\1")'
,
$string
);
// Remplace les entités litérales
$trans_tbl
=
get_html_translation_table
(
HTML_ENTITIES
);
$trans_tbl
=
array_flip
(
$trans_tbl
);
return
strtr
(
$string
,
$trans_tbl
);
}
$c
=
unhtmlentities
(
$a
);
echo
$c
;
// J'ai "sorti" le <strong>chien</strong> tout à l'heure
?>
Note: Vous pourriez vous demander pourquoi trim(html_entity_decode(' ')); ne réduit pas la chaîne à la chaîne vide. C'est parce que l'entité n'est pas un code ASCII 32 (qui serait supprimé par trim() ) mais un code ASCII 160 (0xa0) dans le jeu de caractères par défaut ISO 8859-1 .
Voir aussi htmlentities() , get_html_translation_table() , htmlspecialchars() et urldecode() .