Согласно http://htmlpurifier.org/docs/enduser-customize.html я попытался добавить пользовательский тег в htmlpurifier. Но это работает только для известных тегов, таких как ‹form› или ‹name›.
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.Allowed следующим образом:
$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: ‹v:roundrect ›
‹mytag ›mytag content‹/mytag›
‹form id=x method=POST action=http://sdsd.com›‹/form>
результат: 11111111‹form action=http://sdsd.com›‹/form>
теги ‹v:roundrect› и ‹mytag› игнорировались. Тег ‹form› был очищен больше, чем ожидалось.
<form>
, но он спрятан в HTML. Trusted = true. См. htmlpurifier.org/phorum/read.php?3,5676. ,5677#msg-5677 - person pinkgothic   schedule 21.06.2019