Lors du traitement du contenu Web, nous rencontrons souvent la nécessité de convertir des caractères spéciaux dans le code HTML en entités (tels que & vers & ) ou restaurer les entités HTML en caractères normaux. PHP fournit deux fonctions très pratiques pour ce faire: htmlentities et html_entity_decode .
Cet article présentera l'utilisation de base de ces deux fonctions et montrera comment les utiliser pour implémenter la conversion bidirectionnelle des entités HTML.
La fonction HTMLentities peut convertir certains caractères spéciaux dans une chaîne en entités HTML correspondantes, empêcher le navigateur de les analyser en balises ou d'autres significations, et de protéger correctement la sécurité et la mise en forme de la page.
Prototype de fonction:
string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
Exemple simple:
<?php
$text = "Tom & Jerry's <b>adventure</b>!";
echo htmlentities($text);
// Sortir:Tom & Jerry's <b>adventure</b>!
?>
html_entity_decode fonctionne à l'opposé, il transforme les entités HTML aux caractères correspondants.
Prototype de fonction:
string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") ]] )
Exemple simple:
<?php
$encoded = "Tom & Jerry's <b>adventure</b>!";
echo html_entity_decode($encoded);
// Sortir:Tom & Jerry's <b>adventure</b>!
?>
Supposons que nous ayons une chaîne qui doit être convertie en entité HTML pour enregistrer, puis restaurer l'entité en caractères originaux. Cela peut être réalisé en combinant ces deux fonctions.
<?php
$original = 'Hello & welcome to <a href="https://gitbox.net">gitbox.net</a>!';
// Convertir la chaîne enHTMLentité
$encoded = htmlentities($original);
echo "Après encodage: " . $encoded . "\n";
// 再将Après encodage的字符串还原
$decoded = html_entity_decode($encoded);
echo "Après le décodage: " . $decoded . "\n";
?>
Sortir:
Après encodage: Hello & welcome to <a href="https://gitbox.net">gitbox.net</a>!
Après le décodage: Hello & welcome to <a href="https://gitbox.net">gitbox.net</a>!
Flags : contrôle le type d'entité converti, tel que ENT_QUOTES , convertit à la fois des citations simples et doubles.
Encodage : spécifiez le codage des caractères, la valeur par défaut est le codage dans la configuration PHP, et il est généralement plus sûr de le définir sur UTF-8 .
Double_Encode (spécifique à Htmlentities ): s'il faut échapper à nouveau à l'entité convertie, la valeur par défaut est vraie , généralement définie sur False pour éviter le codage en double.
L'utilisation de HTMLentities peut empêcher les balises HTML d'être analysées par le navigateur et assurer une sortie sûre des caractères.
Utilisez html_entity_decode pour restaurer les entités HTML en caractères originaux, ce qui est pratique pour le traitement ultérieur.
La combinaison de la conversion bidirectionnelle peut traiter en toute sécurité l'entrée des utilisateurs, empêcher les attaques XSS et faciliter l'affichage.
J'espère que cet article peut vous aider à comprendre et à appliquer bien ces deux fonctions et à mettre en œuvre la conversion bidirectionnelle des entités HTML.