Maison > Article > développement back-end > Pourquoi le DOMDocument de PHP a-t-il du mal à gérer les caractères UTF-8 ?
PHP DOMDocument a du mal avec l'encodage UTF-8 (☆)
Vous rencontrez des difficultés avec le DOMDocument de PHP gérant les caractères UTF-8 ? Votre serveur Web, vos fichiers et vos paramètres peuvent être configurés pour UTF-8, mais le DOMDocument reste problématique. Nous explorerons le problème et fournirons des solutions pour garantir une interprétation correcte de l'UTF-8.
La racine du problème :
DOMDocument::loadHTML() attend un HTML chaîne, généralement codée en ISO-8859-1 selon les spécifications HTML. Cependant, les chaînes codées en UTF-8, comme la vôtre, sont incompatibles avec cette attente.
Solution 1 : Convertir en entités HTML
Pour résoudre cette incompatibilité, convertissez tous les caractères dépassant la valeur Unicode 127 (h7F) en entités HTML. La fonction mb_convert_encoding avec l'encodage cible HTML-ENTITIES peut accomplir cette tâche :
<code class="php">$us_ascii = mb_convert_encoding($utf_8, 'HTML-ENTITIES', 'UTF-8');</code>
Solution 2 : ajouter une balise méta HTML
Alternativement, vous pouvez indiquer le encodage en ajoutant un balise spécifiant le jeu de caractères :
<code class="php">$dom = new DomDocument(); $dom->loadHTML('<meta http-equiv="content-type" content="text/html; charset=utf-8">'.$html);</code>
Cette balise est automatiquement placée dans le répertoire
section, conformément aux spécifications HTML 2.0.Assurez-vous d'un encodage précis
Enfin, vérifiez que votre chaîne d'entrée est véritablement encodée en UTF-8. Des codages mixtes peuvent être présents dans certaines entrées, compliquant le processus de conversion. Utilisez des expressions régulières pour effectuer des remplacements de chaînes ciblés si nécessaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!