Pourquoi DOMDocument::loadHTML génère-t-il des erreurs concernant les guillemets manquants ?

Mary-Kate Olsen
Libérer: 2024-10-25 04:18:29
original
894 Les gens l'ont consulté

Why Does DOMDocument::loadHTML Throw Errors About Missing Quotation Marks?

Atténuation des erreurs DOMDocument LoadHTML : résolution des guillemets englobants

Lorsque vous essayez de charger du contenu HTML dans un DOMDocument, vous pouvez rencontrer un avertissement et un message fatal. erreur liée à l’absence de guillemets fermants dans une référence d’entité. Pour résoudre ce problème, examinons le code fourni :

$html = file_get_contents("http://www.somesite.com/");

$dom = new DOMDocument();
$dom->loadHTML($html);

echo $dom;
Copier après la connexion

Ce code tente de récupérer le contenu HTML d'un site Web, de le charger dans un DOMDocument et de faire écho au document résultant. Cependant, il renvoie l'avertissement et l'erreur fatale suivants :

Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity,
Catchable fatal error: Object of class DOMDocument could not be converted to string in test.php on line 10
Copier après la connexion

L'avertissement indique que le contenu HTML contient une référence d'entité dépourvue de guillemets fermants appropriés. Pour résoudre ce problème, nous pouvons utiliser les étapes suivantes :

  1. Activer la gestion des erreurs internes : Pour empêcher PHP de terminer le script en raison de l'avertissement, nous pouvons activer la gestion des erreurs internes :
<code class="php">// create new DOMDocument
$document = new \DOMDocument('1.0', 'UTF-8');

// set error level
$internalErrors = libxml_use_internal_errors(true);</code>
Copier après la connexion
  1. Charger le HTML et récupérer les erreurs : Une fois la gestion interne des erreurs activée, nous pouvons charger le contenu HTML dans le DOMDocument et récupérer les erreurs rencontrées :
<code class="php">// load HTML
$document->loadHTML($html);

// Retrieve errors
$errors = libxml_get_errors();</code>
Copier après la connexion
  1. Itérer et résoudre les erreurs : Le tableau $errors contiendra une liste d'objets d'erreur. Nous pouvons parcourir ces erreurs et les corriger en conséquence, par exemple en ajoutant les guillemets fermants manquants.
  2. Désactiver la gestion des erreurs internes : une fois les erreurs corrigées, nous pouvons désactiver la gestion des erreurs internes. pour restaurer la gestion normale des erreurs PHP :
<code class="php">// Restore error level
libxml_use_internal_errors($internalErrors);</code>
Copier après la connexion

En mettant en œuvre ces étapes, nous pouvons atténuer efficacement l'avertissement et l'erreur fatale liés aux guillemets fermants manquants dans les références d'entité. Cela garantit que le DOMDocument peut être chargé et traité avec succès.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!