Définit la largeur minimale d'un élément
La fonction html_entity_decode() est la fonction contraire de htmlentities(), elle convertit les entités HTML de la chaîne string en caractères normaux..
HTML code des caractères spéciaux et des symboles, tels que € pour €, ou © pour ©.
Lorsque vous créez un moteur de recherche PHP ou un outil d'analyse de page web, les entités HTML dans une page doivent être décodées en caractères uniques pour obtenir un texte propre et analysable. La fonction standard html_entity_decode() de PHP va faire le travail, mais vous devez utiliser un caractère riche, codage, tel que UTF-8 et les chaînes des caractères multi-octets. Dans cet article on va voir comment.
rel=nofellow>entité HTML. Il y a quelques centaines de ces entités définies dans HTML 4. Mais il y a plus de 100 000 caractères Unicode disponibles avec les entités décimales ou hexadécimales. Cependant, le support des polices pour tous ces entités est encore incomplète sur les systèmes Windows, Mac et Linux d'aujourd'hui. Avant d'utiliser les caractères Unicode dans une page web, faites des essais sur des navigateurs différents pour différents systèmes d'exploitation.
Pour faire une page web de traitement de texte, vous devez convertir les entités HTML et les références de caractère numérique en caractères normaux. Vous devrez utiliser un codage basé sur Unicode, tel que UTF-8 ou UTF-16, qui est capable de représenter tous ces entités.
PHP dispose de deux fonctions capable de décoder les références de caractères en caractères Unicode : html_entity_decode() etmb_convert_encoding(). L’utilisation des deux est facile.
(PHP 4 >= 4.3.0, PHP 5)
html_entity_decode() — Convertit toutes les entités HTML en caractères normaux
La fonction html_entity_decode() est la fonction contraire de htmlentities() : elle convertit les entités HTML de la chaîne string en caractères normaux..
Syntaxehtml_entity_decode(string,quotestyle,character-set)
Le premier argument est la chaîne de texte à décoder. La version décodée de la chaîne est retournée.
Le 2e argument indique comment traiter les guillemets à la fonction.
Le 3éme argument sélectionne le jeu de caractères à décoder . Cet argument est optionnel et vaut par défaut "ISO_8859-1" (Latin-1).
Toutefois, cette valeur par défaut, html_entity_decode() décode uniquement les références de caractères Latin-1 équivalents. Mais comme il y a seulement 191 caractères imprimables de Latin-1. Tous les autres caractères références restent non décodable. Pour décoder toutes les références de caractères HTML, vous devez utiliser un codage Unicode comme "utf-8" comme troisième argument.
Paramètre | Description | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
string |
Requis. Spécifie la chaîne à décoder |
|||||||||||||||||||||||||||||||||||||||
quotestyle |
Facultatif. 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) : Les modèles disponibles de citation sont :
|
|||||||||||||||||||||||||||||||||||||||
character-set |
Facultatif. Une chaîne qui spécifie quel jeu de caractères employer.
|
Note: Les autres jeux de caractères ne sont pas reconnus, serons remplacés par ISO-8859-1.
Exemple : 📋 Copier le code
<html> <body> <?php $chaine = "Jane & 'Tarzan'"; echo html_entity_decode($chaine); echo "<br />"; echo html_entity_decode($chaine, ENT_QUOTES); echo "<br />"; echo html_entity_decode($chaine, ENT_NOQUOTES); ?> </body> </html>
Le résultat dans le navigateur du code ci-dessus sera :
Jane & 'Tarzan' Jane & 'Tarzan' Jane & 'Tarzan'
Si vous regardez la « source » dans la fenêtre de navigateur, vous verrez le code HTML suivant :
Exemple : 📋 Copier le code
<html> <body> Jane & 'Tarzan'<br />Jane & 'Tarzan'<br />Jane & 'Tarzan' </body> </html>
Exemple : 📋 Copier le code
<html> <body> <?php $chaine = " Mon nom est Øyvind Åsane. Je suis norvégien "; echo html_entity_decode($chaine, ENT_QUOTES, "ISO-8859-1"); ?> </body> </html>
Le résultat dans le navigateur du code ci-dessus sera :
Mon nom est Øyvind Åsane. Je suis norvégien
Si vous regardez la « source » dans la fenêtre de navigateur, vous verrez le code HTML suivant :
<html> <body> Mon nom est Øyvind Åsane. Je suis norvégien </body> </html>
Exemple : 📋 Copier le code
<?php $orig = 'J\'ai "sorti" le <strong>chien</strong> tout à l\'heure'; $a = htmlentities($orig); $b = html_entity_decode($a); echo $a; echo "<br />"; echo $b; echo "<br />"; // Pour les utilisateurs ayant des versions antérieures à PHP 4.3.0 : function unhtmlentities($chaineing) { // Remplace les entités numériques $chaineing = preg_replace('~([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $chaineing); $chaineing = preg_replace('~([0-9]+);~e', 'chr("\\1")', $chaineing); // Remplace les entités litérales $trans_tbl = get_html_translation_table(HTML_ENTITIES); $trans_tbl = array_flip($trans_tbl); return strtr($chaineing, $trans_tbl); } $c = unhtmlentities($a); echo $c; ?>
La fonction mb_convert_encoding() est l'une des nombreuses fonctions de caractères multi-octets en PHP. Il peut être utilisé pour effectuer une conversion entre les différents codages (environ 60). Un tel codage est pour les entités HTML et les références de caractères :
syntaxe$utf8_text = mb_convert_encoding( $text, "utf-8", "HTML-ENTITIES" );
Le premier argument est la chaîne de texte à décoder, et la version décodée est retournée et dans la syntaxe ci-dessus elle est stockée dans la variable $utf8_text
Le deuxième argument est l'encodage utilisé, par exemple "utf-8".
Le troisième argument sélectionne l'encodage à convertir. Dans ce cas, "Entités HTML" indique à la fonction de convertir les entités HTML en caractères UTF-8.
Cette fonction fonctionne est utile pour les entités HTML nommées et les références de caractère décimal. Malheureusement, à partir de PHP 5.2, mb_convert_encoding() a un bug connu qui convertit incorrectement les entités HTML hexadécimales en caractères de sans sens. Jusqu'à ce que ce bug soit fixé, utiliser html_entity_decode().
Lire un fichier HTML, convertir en UTF-8, supprimer les balises, décode les entités HTML et afficher le résultat:
Exemple : 📋 Copier le code
<?php $NomFichier="https://www.oujood.com/ref-fonc-php/fonction-html-entity-decode.php"; /* Lire un fichier HTML */ $sortie_texte = file_get_contents($NomFichier); /*Obtenir le codage des caractères d'une balise du fichier */ preg_match( '@<meta\s+http-equiv="Content-Type"\s+content="([\w/]+)(;\s+charset=([^\s"]+))?@i', $sortie_texte, $matches ); $encoding = $matches[3]; /* Convertir en UTF-8 avant toute chose */ $utf8_text = iconv( $encoding, "utf-8", $sortie_texte ); /*Supprime les balises HTML */ $utf8_text = strip_tags( $utf8_text ); /* Decoder les entités HTML */ $utf8_text = html_entity_decode( $utf8_text, ENT_QUOTES, "utf-8" ); echo $utf8_text; ?>
Fonction precedente: |
Fonction suivante: |