die Warnungen auszublenden, Sie spezielle Anweisungen zu libxml
geben, die intern verwendet, um die Analyse auszuführen:
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
Die libxml_use_internal_errors(true)
zeigt an, dass Sie die Fehler und Warnungen selbst zu behandeln gehst und du Ich will nicht, dass sie die Ausgabe deines Skripts durcheinander bringen.
Dies ist nicht dasselbe wie der Operator @
. Die Warnungen werden hinter den Kulissen gesammelt und können anschließend unter Verwendung von libxml_get_errors()
abgerufen werden, falls Sie die Protokollierung durchführen oder die Liste der Probleme an den Aufrufer zurücksenden möchten.
Unabhängig davon, ob Sie die gesammelten Warnungen verwenden, sollten Sie die Warteschlange immer durch Aufrufen von libxml_clear_errors()
löschen.
den Zustand Erhaltung
Wenn Sie anderen Code, der libxml
nutzt es sich lohnen kann Ihren Code, um sicherzustellen, das Handling globalen Zustand des Fehlers nicht verändert; Dazu können Sie den Rückgabewert libxml_use_internal_errors()
verwenden, um den vorherigen Status zu speichern.
// modify state
$libxml_previous_state = libxml_use_internal_errors(true);
// parse
$dom->loadHTML($html);
// handle errors
libxml_clear_errors();
// restore
libxml_use_internal_errors($libxml_previous_state);
diese Lösung Versuchen - viel einfacher zu sein scheint - http://stackoverflow.com/questions/6090667/php-domdocument-errors-warnings-on-html5-tags – Marcin
Converting lausig Eingang korrekte Ausgabe ist, was bezahlt die Rechnungen;) Die [Wiederherstellen Option ist im Handbuch] (http://nl1.php.net/manual/en/class.domdocument.php#domdocument.props.recover). es ist nur ein Boolescher. Sie können einfach '$ dom-> saveHTML()' aufrufen, um zu sehen, welche Art, wenn das Dokument libxml versucht, Ihre $ html-Eingabe zu machen, normalerweise ziemlich nah/ok ist. – Wrikken