Возвращает ошибку, если HTMLPurifier не смог разобрать строку?

#php #html #htmlpurifier

#php #HTML #htmlpurifier

Вопрос:

Кажется, я не могу понять самую основную часть библиотеки PHP. Как вы проверяете, вернул ли он ошибку или нет?

Я использую библиотеку под названием HTMLPurifier для очистки пользовательского ввода html для базы данных, вот как выглядит инициализация:

 require_once '/path/to/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
 

Как мне проверить, сделал ли очиститель что-нибудь или вернул ошибку? Что-то вроде

 if (!$clean_html) {
   echo 'Error occured: '.$purifier->error;
}
 

Ответ №1:

В зависимости от того, о каких ошибках вы хотите, чтобы система сообщала, Core.CollectErrors директива может быть тем, что вы ищете:

Следует ли собирать ошибки, обнаруженные при фильтрации документа. Это полезный способ дать обратную связь вашим пользователям. Предупреждение: В настоящее время эта функция является очень неоднородной и экспериментальной, с множеством возможных сообщений об ошибках, которые еще не реализованы. Это не вызовет никаких проблем, но может и не помочь вашим пользователям.

Вы бы использовали это так:

 require_once '/path/to/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$config->set('Core', 'CollectErrors', true);
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);

$error_collector = $purifier->context->get('ErrorCollector');
echo $error_collector->getHTMLFormatted($config);
 

Вы можете увидеть коллекцию ошибок, используемую в этом примере скрипта: https://repo.or.cz/htmlpurifier-web.git/blob/b4f116b5aebdc688e6e4b458d5a790add6282cd5:/demo.php

Посмотрите, это то, что вам нужно?