Aby ukryć ostrzeżenia, musisz podać specjalne instrukcje, libxml
które są używane wewnętrznie do wykonywania analizy:
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
Symbol libxml_use_internal_errors(true)
wskazuje, że sam poradzisz sobie z błędami i ostrzeżeniami i nie chcesz, aby zepsuły wyniki Twojego skryptu.
To nie to samo, co @
operator. Ostrzeżenia są zbierane za kulisami, a następnie możesz je odzyskać, używając libxml_get_errors()
w przypadku, gdy chcesz wykonać rejestrację lub zwrócić listę problemów dzwoniącemu.
Niezależnie od tego, czy używasz zebranych ostrzeżeń, czy nie, zawsze powinieneś wyczyścić kolejkę, dzwoniąc libxml_clear_errors()
.
Ochrona państwa
Jeśli masz inny kod, który używa libxml
, warto upewnić się, że Twój kod nie zmienia globalnego stanu obsługi błędów; w tym celu możesz użyć zwracanej wartości, libxml_use_internal_errors()
aby zapisać poprzedni stan.
$libxml_previous_state = libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
libxml_use_internal_errors($libxml_previous_state);