Вернуть ошибку, если HTMLPurifier не смог разобрать строку? - PullRequest
0 голосов
/ 18 апреля 2019

Я не могу понять самую основную часть библиотеки 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 Ответ

1 голос
/ 18 апреля 2019

В зависимости от того, какие ошибки вы хотите, чтобы система сообщала, директива 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

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

...