#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
Посмотрите, это то, что вам нужно?