html_entity_decode

(PHP 4 >= 4.3.0)

html_entity_decode --  Convertit toutes les entités HTML en caractères normaux

Description

string html_entity_decode ( string string [, int quote_style [, string charset]])

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 1. Constantes disponibles pour quote_style

ConstanteDescription
ENT_COMPATConvertit les guillemets doubles et ignore les guillemets simples.
ENT_QUOTESConvertit les guillemets doubles et les guillemets simples.
ENT_NOQUOTESConvertit les guillemets simples et ignore les guillemets doubles.

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és dans la conversion.

Les jeux de caractères suivantes sont disponibles et supportés par PHP 4.3.0 et plus récent.

Tableau 2. Jeux de caractères supportés

Jeux de caractèresDescription
ISO-8859-1 Europe occidentale, Latin-1
ISO-8859-15 Europe occidentale, Latin-9. Dispose du signe Euro, des caractères spéciaux français et finlandais, qui manque au Latin-1(ISO-8859-1).
UTF-8 Unicode 8 bits multi octets, compatible avec l'ASCII
cp1252 Jeux de caractères spécifique de Windows pour l'Europe occidentale.
BIG5 Chinois traditionnel, principalement utilisé à Taiwan.
GB2312 Chinois simplifié, officiel.
BIG5-HKSCS Big5 avec les extensions de Hong Kong, chinois traditionnel.
Shift_JIS Japonais
EUCJP Japonais

Note : Les autres jeux de caractères ne sont pas reconnus, et le ISO-8859-1 sera utilisé à la place.

Exemple 1. Décoder des entités HTML

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

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

// Pour les utilisateurs ayant des versions ant&eacute;rieures &agrave; PHP 4.3.0 :
  
function unhtmlentities ($string) {
    
$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 <b>chien</b> tout &agrave; l'heure
?>

Note : Vous pourriez vous demander pouquoi trim(html_entity_decode('&nbsp;')); ne résuit pas la chaîne à la chaîne vide. C'est parceque l'entité '&nbsp;' 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(), htmlspecialchars(), get_html_translation_table(), htmlspecialchars() et urldecode().