Разрешить полный HTML для анализа в HTMLPurifier

Это проблема, с которой я столкнулся в течение долгого времени - в настоящее время я принимаю полную html-страницу от пользователя в качестве ввода и хочу отфильтровать / очистить ее. проблема с HTMLpurifier заключается в том, что он удаляет теги head, html и body, а также стили в заголовке. Я погуглил, посмотрел форумы, попытался реализовать написанное, и не повезло. Может кто-нибудь помочь?

Что я хочу: сохранить HTML, заголовок, стиль, теги тела

Что я сделал:

$config->set('HTML.DefinitionID', 'test');
    $config->set('HTML.DefinitionRev', 1);
    $config->set('HTML.AllowedElements', array('html','head', 'body', 'style', 'div', 'p'));    

    if ($def = $config->maybeGetRawHTMLDefinition()) {
        $def->addElement('html', 'Block', 'Inline', 'Common', array());
        $def->addElement('head', 'Block', 'Inline', 'Common', array());
        $def->addElement('style', 'Block', 'Inline', 'Common', array());
        $def->addElement('body', 'Block', 'Inline', 'Common', array());

    }

3 ответа

Решение

Конечный результат - HTMLPurfier изначально не разрешает полный синтаксический анализ HTML - либо расширьте его, либо найдите проход

Вам нужно

$config->set('Core.ConvertDocumentToFragment', false);

Для любой причины, Core.ConvertDocumentToFragment по умолчанию true, хотя в документации говорится, что "для большинства входных данных эта обработка не является необходимой".

Меня это тоже укусило. Все, что я получил от сборщика ошибок, - это загадочное сообщение "Удаленные теги метаданных документа", которое, в свою очередь, является переводом внутреннего сообщения "Lexer: Извлеченное тело".

Почему бы не использовать strip_tags? Поддерживает список разрешенных тегов.

http://www.php.net/manual/en/function.strip-tags.php

Другие вопросы по тегам