Я не могу добавить пользовательский тег в очиститель HTML - PullRequest
0 голосов
/ 21 июня 2019

Согласно http://htmlpurifier.org/docs/enduser-customize.html я пытался добавить пользовательский тег в htmlpurifier. Но это работает только для известных тегов, таких как или

    require_once __DIR__ . '/htmlpurifier-4.10.0/library/HTMLPurifier.auto.php';

    $config = HTMLPurifier_Config::createDefault();

    $config->set('HTML.DefinitionRev', 1);
    $config->set('Cache.DefinitionImpl', null);
    $def = $config->getHTMLDefinition(true);

    $form = $def->addElement(
        'form',
        'Block',
        'Flow',
        'Common',
        array(
            'action*' => 'URI',
            'method' => 'Enum#get|post',
            'name' => 'ID'
        )
    );
    $form->excludes = array('form' => true);

    $vroundrect = $def->addElement(
        'v:roundrect',
        'Block|Inline',
        'Optional: Flow|Inline',
        'Common',
        array(
            'xmlns:v' => 'CDATA',
            'xmlns:w' => 'CDATA'
        )
    );
    $vroundrect->excludes = array('v:roundrect' => true);

    $mytag = $def->addElement(
        'mytag',
        'Block|Inline',
        'Optional: Flow|Inline',
        'Common',
        array(
        )
    );
    $mytag->excludes = array('mytag' => true);

    $purifier = new HTMLPurifier($config);
    print $purifier->purify(file_get_contents(__DIR__ . '/tmpHTML2.txt'));

Я пробовал HTML. Допускается так:

$validTags = '*[id|class|name],br,a[href|title|rel|target],' .
        'img[src|alt|height|width],div,' .
        'u,em,ul,ol,li,strong,span,mytag,v:roundrect,form[action|method]';
$config->set('HTML.Allowed', $validTags);

Это не работает. Как бы то ни было, я не желаю заменять список доступных тегов, я хочу добавить новые теги в список доступных тегов.

tmpHTML2.txt: 11111111 </ v: roundrect>
контент mytag
</ form & gt" rel = "nofollow noreferrer"> http://sdsd.com">;

Результат: 11111111 </ form & gt" rel = "nofollow noreferrer"> http://sdsd.com">;

Теги

и были проигнорированы. Метка была продезинфицирована больше, чем ожидалось.

1 Ответ

0 голосов
/ 21 июня 2019

Я пробовал этот код на другом компьютере, и он работает.Я думаю, что это была проблема с кешем.Похоже, директива $ config-> set ('Cache.DefinitionImpl', null);не отключает кеш.Я постараюсь удалить файлы из библиотеки / HTMLPurifier / DefinitionCache / Serializer.Что бы проблема не была решена.

...