Per nascondere gli avvertimenti, si deve dare istruzioni speciali per libxml
che viene utilizzato internamente per eseguire l'analisi:
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
Il libxml_use_internal_errors(true)
indica che si sta andando a gestire gli errori e gli avvisi te stesso e non voglio che rovinino l'output del tuo script.
Questo non è lo stesso dell'operatore @
. Gli avvisi vengono raccolti dietro le quinte e successivamente è possibile recuperarli utilizzando libxml_get_errors()
nel caso in cui si desideri eseguire la registrazione o restituire l'elenco dei problemi al chiamante.
Se si utilizzano o meno gli avvisi raccolti, è necessario cancellare sempre la coda chiamando .
Preservare lo stato
Se si dispone di altro codice che utilizza libxml
può essere utile per assicurarsi che il codice non altera il globale stato della gestione degli errori; per questo, è possibile utilizzare il valore di ritorno di libxml_use_internal_errors()
per salvare lo stato precedente.
// 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);
fonte
2013-07-09 22:59:37
Prova questa soluzione - sembra essere molto più facile - http://stackoverflow.com/questions/6090667/php-domdocument-errors-warnings-on-html5-tags – Marcin
Conversione di ingresso schifoso di uscita corretta è ciò che paga le fatture;) L'opzione [recuperare è nel manuale] (http://nl1.php.net/manual/en/class.domdocument.php#domdocument.props.recover). è solo un booleano. Puoi semplicemente chiamare '$ dom-> saveHTML()', quindi vedi che tipo se il documento libxml sta cercando di fare il tuo input '$ html', di solito è piuttosto vicino/ok. – Wrikken