Pour masquer les avertissements, vous devez donner des instructions spéciales à libxml
qui est utilisé en interne pour effectuer l'analyse :
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
La libxml_use_internal_errors(true)
indique que vous allez gérer les erreurs et avertissements vous-même et que vous ne voulez pas qu'ils perturbent la sortie de votre script.
Ce n'est pas la même chose que l'opérateur @
. Les avertissements sont collectés en arrière-plan et ensuite vous pouvez les récupérer en utilisant libxml_get_errors()
si vous souhaitez effectuer un journal ou renvoyer la liste des problèmes à l'appelant.
Que vous utilisiez ou non les avertissements collectés, vous devriez toujours vider la file en appelant libxml_clear_errors()
.
Préservation de l'état
Si vous avez d'autres codes qui utilisent libxml
, il peut être utile de vous assurer que votre code n'altère pas l'état global de la gestion des erreurs ; pour cela, vous pouvez utiliser la valeur de retour de libxml_use_internal_errors()
pour sauvegarder l'état précédent.
// modifier l'état
$libxml_previous_state = libxml_use_internal_errors(true);
// analyser
$dom->loadHTML($html);
// gérer les erreurs
libxml_clear_errors();
// restaurer
libxml_use_internal_errors($libxml_previous_state);
1 votes
Essayez cette solution - semble être beaucoup plus facile - stackoverflow.com/questions/6090667/…
0 votes
Transformer une mauvaise entrée en une sortie correcte est ce qui paie les factures ;) L'option recover est dans le manuel. c'est juste un booléen. Vous pouvez simplement appeler
$dom->saveHTML()
pour voir quel genre de document libxml essaie de créer à partir de votre entrée$html
, habituellement c'est assez proche/correct.