Articles
This document is also available in English
html_entity_decode() est l'inverse de htmlentities() : elle convertit les entités HTML d'une chaîne en caractères normaux. Une table de convertion est présentée ici, ou via get_html_translation_table()
Exemple 1 - Scinder une chaine encodée issue d'une base de données :html_entity_decode() est utilisée dans le but de récupérer une chaine originale, depuis une chaine html encodée.
<?php $mystring = mysql_result($mysql_query,1); $chaine = wordwrap(html_entity_decode($mystring,ENT_QUOTES,'ISO-8859-1'),50); // on décode la chaine, pour ne pas "compter" les caractères encodés echo $chaine; ?>
Exemple 2 - Utilisation de la table de transformation en décodage :
htmlentities() permet de se protéger efficacement contre les attaques de types XSS
<?php function decode($text){ $trans_tbl = get_html_translation_table(HTML_ENTITIES,ENT_COMPAT); $trans_tbl = array_flip($trans_tbl); $text = strtr($text, $trans_tbl); return $text; } ?>
Exemple 3 - Protection contre le XSS :
<?php
$bad_str_posted_on_forum = "<script>alert('XSS attack!')</script>";
$display_forum = htmlentities($bad_str_posted_on_forum,ENT_QUOTES,'ISO-8859-1');
echo $display_forum;
?>
<strong>A mémoriser
</strong>
- Attention au choix du jeu de caractères d'arrivée en PHP :
- html_entity_decode(), htmlentities(), get_html_translation_table() et htmlspecialchars()
- Si cette fonction est très utile en français pour gérer les accents et autres caractères spéciaux, ainsi que pour d'autres langues européennes, elle est plus rarement utile en anglais.
Commentaires
Vous pouvez ajouter votre commentaire! |
Vous devez vous connecter pour commenter


