HTMLPurifier удаляет </a> - как этого не допустить ? - PullRequest
0 голосов
/ 06 мая 2020

При использовании htmlpurifier 4.10 теги имени привязки удаляются из текста.

Текущая конфигурация:

    $class_file         = 'static/htmlpurifier-4.10.0-lite/library/HTMLPurifier.auto.php';
    $class_html_cleaner = 'HTMLPurifier';
    require_once($class_file);

    // Initiate config 
    $config     = HTMLPurifier_Config::createDefault();
    $config->set('AutoFormat.AutoParagraph', FALSE);
    $config->set('AutoFormat.RemoveEmpty', TRUE);
    $config->set('AutoFormat.RemoveEmpty.RemoveNbsp', TRUE);

    // initiate class
    $purifier   = new HTMLPurifier($config);

    // clean passed HTML
    $html       = $purifier->purify($html);

Добавление конфигурации HTML.Allowed:

    $config->set('AutoFormat.AutoParagraph', FALSE);
    $config->set('AutoFormat.RemoveEmpty', TRUE);
    $config->set('AutoFormat.RemoveEmpty.RemoveNbsp', TRUE);
    $config->set('HTML.Allowed', 'a[href|target|name|id|class]'); 

Ничего не делает, теги имен все равно удаляются.

Удаление трех параметров AutoFormat, так что у меня есть только следующее:

    $config->set('HTML.Allowed', 'a[href|target|name|id|class]'); 

Также удаляется атрибут name, но по крайней мере теперь тег имени, который я опубликовал, возвращается как <a></a> .

Что еще мне здесь не хватает? Я бы предпочел не использовать HTML. Разрешено, если это означает, что я должен явно указывать каждый другой потенциальный тег / атрибут, который я когда-либо использовал.

Руководство / помощь очень признательны. Бьюсь с этим уже час.

1 Ответ

1 голос
/ 06 мая 2020

Правило Attr.EnableID по умолчанию удаляет атрибуты html id. (И это похоже на атрибуты имени.) http://htmlpurifier.org/live/configdoc/plain.html#HTML .EnableAttrID

Почему это происходит, объясняется здесь http://htmlpurifier.org/docs/enduser-id.html.

...