Отключите предупреждения при загрузке неправильно построенного HTML DomDocument (PHP)

При некоторых обстоятельствах может быть возможно переместиться (все или по крайней мере ключевая роль) программного обеспечения в веб-сервис, который размещает Ваша организация.

Тот путь, проверки лицензий могут быть выполнены в безопасности Вашей собственной серверной.

73
задан thomasrutter 17 May 2010 в 07:02
поделиться

2 ответа

You can install a temporary error handler with set_error_handler

class ErrorTrap {
  protected $callback;
  protected $errors = array();
  function __construct($callback) {
    $this->callback = $callback;
  }
  function call() {
    $result = null;
    set_error_handler(array($this, 'onError'));
    try {
      $result = call_user_func_array($this->callback, func_get_args());
    } catch (Exception $ex) {
      restore_error_handler();        
      throw $ex;
    }
    restore_error_handler();
    return $result;
  }
  function onError($errno, $errstr, $errfile, $errline) {
    $this->errors[] = array($errno, $errstr, $errfile, $errline);
  }
  function ok() {
    return count($this->errors) === 0;
  }
  function errors() {
    return $this->errors;
  }
}

Usage:

// create a DOM document and load the HTML data
$xmlDoc = new DomDocument();
$caller = new ErrorTrap(array($xmlDoc, 'loadHTML'));
// this doesn't dump out any warnings
$caller->call($fetchResult);
if (!$caller->ok()) {
  var_dump($caller->errors());
}
13
ответ дан 24 November 2019 в 12:05
поделиться

Вызов

libxml_use_internal_errors(true);

перед обработкой с помощью $ xmlDoc-> loadHTML ()

Это указывает libxml2 не отправлять ошибки и предупреждения в PHP. Затем, чтобы проверить наличие ошибок и обработать их самостоятельно, вы можете обратиться к libxml_get_last_error () и / или libxml_get_errors () , когда будете готовы.

209
ответ дан 24 November 2019 в 12:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: