Как добавить элементы figure и figcaption в htmlpurifier? - PullRequest
0 голосов
/ 14 мая 2019

Когда я добавляю изображение с параметрами, у меня была ОШИБКА

ErrorException: элемент 'figcaption' не поддерживается (для получения информации по реализации см. Форумы поддержки)

мой код

         'HTML.Allowed' => 'a[href],blockquote,br,del,em,figcaption,figure,h1,h2,h3,h4,h5,h6,img[title|alt|src],li,ol,p,pre,strong,ul',

 .//////////////////////////////////////////////////////////////

        $config = HTMLPurifier_Config::createDefault();

        $config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');

        $config->set('HTML.DefinitionRev', 1);

        if ($def = $config->maybeGetRawHTMLDefinition()) {
            $def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common');
            $def->addElement('figcaption', 'Block', 'Flow', 'Common');
        }

1 Ответ

0 голосов
/ 15 мая 2019

Ваш код выглядит хорошо для меня. Порядок, в котором вы выполняете действия, может привести к сбою - убедитесь, что ваше приложение не пытается purify(), прежде чем добавлять элементы. Этот пример работал для меня:

<?php

require_once 'library/HTMLPurifier.auto.php';

$dirty_html = '<figure>
    <img src="/media/examples/elephant-660-480.jpg"
         alt="Elephant at sunset">
    <figcaption>An elephant at sunset</figcaption>
</figure>';

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', 'a[href],blockquote,br,del,em,figcaption,figure,h1,h2,h3,h4,h5,h6,img[title|alt|src],li,ol,p,pre,strong,ul');
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
if ($def = $config->maybeGetRawHTMLDefinition()) {
    $def->addElement('figcaption', 'Block', 'Flow', 'Common');
    $def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common');
}

$purifier = new HTMLPurifier($config);

$clean_html = $purifier->purify($dirty_html);

echo $clean_html;

Это дало мне <figure><img src="/media/examples/elephant-660-480.jpg" alt="Elephant at sunset" /><figcaption>An elephant at sunset</figcaption></figure>.

Закомментируем эти строки:

$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
if ($def = $config->maybeGetRawHTMLDefinition()) {
    $def->addElement('figcaption', 'Block', 'Flow', 'Common');
    $def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common');
}

... дал мне ошибку, которую вы цитируете в своем вопросе, предполагая, что к тому времени, когда вы звоните purify(), код еще не был выполнен.

Если вы расскажете нам больше о , где в вашем рабочем процессе приложения вы пытаетесь настроить определение HTML, и где вы очищаете, я мог бы помочь вам устранить причину вашей проблемы. .

...