2 votes

Supprimer l'avertissement DOM PHP

J'ai ce code :

$strhtml = file_get_contents('05001400300320100033100.html');
$dochtml = new DOMDocument();
 $dochtml->loadHTML($strhtml);
 $elm = $dochtml->getElementById('upPanelActuciones');
 print $dochtml->saveXml($elm);

Je reçois cet avertissement :

      Avertissement : DOMDocument::loadHTML() [domdocument.loadhtml] : erreur d'analyse du nom de l'attribut dans Entity, ligne : 674 dans C:\AppServ\www\video01\sector2\dom3.php à la ligne 10

      Avertissement : DOMDocument::loadHTML() [domdocument.loadhtml] : Balise d'ouverture et de fermeture incompatibles : div et td dans Entity, ligne : 1019 dans C:\AppServ\www\video01\sector2\dom3.php à la ligne 10

      Avertissement : DOMDocument::loadHTML() [domdocument.loadhtml] : Balise d'ouverture et de fermeture incompatibles : div et td dans Entity, ligne : 1020 dans C:\AppServ\www\video01\sector2\dom3.php à la ligne 10

      Avertissement : DOMDocument::loadHTML() [domdocument.loadhtml] : Balise d'ouverture et de fermeture incompatibles : div et td dans Entity, ligne : 1022 dans C:\AppServ\www\video01\sector2\dom3.php à la ligne 10

Je ne peux pas manipuler le html (je sais que le fichier html contient des erreurs), existe-t-il un moyen de supprimer ces avertissements? (ne pas les afficher).

Merci d'avance pour votre aide.

13voto

Danilo Kobold Points 2089

DOMDocument est très bon pour traiter une mise en forme imparfaite, mais il lance des avertissements partout quand il le fait.

Ce n'est pas bien documenté ici. La solution à cela est de mettre en place un dispositif séparé pour traiter juste ces erreurs.

Définissez libxml_use_internal_errors(true) avant d'appeler loadHTML. Cela empêchera les erreurs de remonter à votre gestionnaire d'erreurs par défaut. Et vous pourrez alors y accéder (si vous le souhaitez) en utilisant d'autres fonctions d'erreur libxml.

Vous pouvez trouver plus d'informations ici http://www.php.net/manual/en/ref.libxml.php

La bonne façon de traiter les erreurs de DOMDocument est la suivante:

load('file.xml')) {
    foreach (libxml_get_errors() as $error) {
        // gérer les erreurs ici
    }

    libxml_clear_errors();
}

?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X