Чтобы скрыть предупреждения, вы должны дать специальные инструкции для libxml
, который используется для внутреннего анализа:
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
libxml_use_internal_errors(true)
указывает, что вы собираетесь обрабатывать ошибки и предупреждения самостоятельно и не хотите, чтобы они испортили вывод вашего скрипта.
Это не то же самое, что оператор @
. Предупреждения собираются за кулисами, и после этого вы можете получить их, используя libxml_get_errors()
на тот случай, если вы захотите выполнить регистрацию или вернуть список проблем вызывающей стороне.
Независимо от того, используете ли вы собранные предупреждения или нет, вы всегда должны очищать очередь, вызывая libxml_clear_errors()
.
Сохранение состояния
Если у вас есть другой код, который использует libxml
, возможно, стоит убедиться, что ваш код не изменяет global состояние обработки ошибок; для этого вы можете использовать возвращаемое значение libxml_use_internal_errors()
для сохранения предыдущего состояния.
// 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);