OUJOOD.COM
Définition et usage de la fonction htmlentities()
PHP - Référence des fonctions de manipulation de chaînes
Versions PHP : PHP 4, PHP 5, PHP 7, PHP 8
htmlentities() — Convertit tous les caractères éligibles en entités HTML pour un affichage sécurisé
Description de htmlentities()
La fonction htmlentities() est similaire à la fonction htmlspecialchars(), mais avec une différence importante : elle convertit tous les caractères possédant un équivalent en entités HTML, et pas seulement les caractères spéciaux critiques (<, >, &, ", ').
Cette fonction est essentielle pour afficher du contenu utilisateur de manière sécurisée dans vos pages HTML et prévenir les attaques XSS (Cross-Site Scripting).
Pour réaliser l'opération inverse (décoder les entités HTML en caractères), utilisez la fonction html_entity_decode().
Syntaxe
htmlentities(string $string, int $flags = ENT_COMPAT, ?string $encoding = null, bool $double_encode = true): string
Paramètres
| Paramètre | Description | |||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | Requis. La chaîne de caractères à convertir en entités HTML. | |||||||||||||||||||||||||||||||||||||||
| flags |
Facultatif. Définit le comportement de conversion des guillemets.
Valeur par défaut : ENT_COMPAT
|
|||||||||||||||||||||||||||||||||||||||
| encoding |
Facultatif. Spécifie l'encodage de caractères à utiliser.
Valeur par défaut : UTF-8 (depuis PHP 5.4.0)
Jeux de caractères supportés
|
|||||||||||||||||||||||||||||||||||||||
| double_encode | Facultatif. Si FALSE, les entités HTML existantes ne seront pas ré-encodées. Valeur par défaut : TRUE |
⚠️ Note importante : Utilisez toujours UTF-8 comme encodage pour les applications modernes. Les encodages non reconnus seront remplacés par ISO-8859-1 par défaut.
Valeur de retour
Retourne la chaîne encodée. Si la chaîne d'entrée contient une séquence d'octets invalide dans l'encodage spécifié, une chaîne vide sera retournée (sauf si ENT_IGNORE ou ENT_SUBSTITUTE sont utilisés).
Exemples pratiques
Exemple 1 : Conversion basique avec gestion des guillemets
Exemple : 📋 Copier le code
<?php $chaine = 'Un \'apostrophe\' en <strong>gras</strong>'; // Avec ENT_COMPAT (par défaut) : convertit uniquement les guillemets doubles echo htmlentities($chaine); echo "<br>"; // Avec ENT_QUOTES : convertit guillemets doubles ET simples echo htmlentities($chaine, ENT_QUOTES); ?>
Résultat affiché dans le navigateur :
Un 'apostrophe' en <strong>gras</strong> Un 'apostrophe' en <strong>gras</strong>
Code source HTML généré :
Un 'apostrophe' en <strong>gras</strong> <br> Un 'apostrophe' en <strong>gras</strong>
Exemple 2 : Gestion des caractères invalides en UTF-8
Exemple : 📋 Copier le code
<?php // Séquence d'octets invalide en UTF-8 $chaine = "\x8F!!!"; // Sans ENT_IGNORE : affiche une chaîne vide (caractère invalide) echo htmlentities($chaine, ENT_QUOTES, "UTF-8"); echo "<br>"; // Avec ENT_IGNORE : ignore les caractères invalides et affiche le reste echo htmlentities($chaine, ENT_QUOTES | ENT_IGNORE, "UTF-8"); ?>
Résultat affiché dans le navigateur :
[chaîne vide]
!!!
Exemple 3 : Affichage sécurisé de contenu utilisateur
Exemple : 📋 Copier le code
<?php
// Simulation d'une entrée utilisateur potentiellement dangereuse
$commentaire_utilisateur = '<script>alert("XSS")</script>Bonjour!';
// Affichage sécurisé : le script ne sera pas exécuté
echo htmlentities($commentaire_utilisateur, ENT_QUOTES, 'UTF-8');
?>
Résultat affiché dans le navigateur :
<script>alert("XSS")</script>Bonjour!
💡 Conseil de sécurité : Utilisez toujours htmlentities() ou htmlspecialchars() lors de l'affichage de contenu provenant d'utilisateurs pour prévenir les attaques XSS.
Différence entre htmlentities() et htmlspecialchars()
- htmlspecialchars() : Convertit uniquement les caractères spéciaux essentiels (<, >, &, ", ')
- htmlentities() : Convertit TOUS les caractères ayant un équivalent HTML (é → é, € → €, etc.)
Recommandation : Utilisez htmlspecialchars() pour la plupart des cas (plus performant). Réservez htmlentities() aux situations où vous devez encoder tous les caractères spéciaux.
|
Fonction précédente: Fonction html_entity_decode() |
Référence des fonctions de chaînes de caractères |
Fonction suivante: Fonction htmlspecialchars_decode() |