HtmlPurifier-允许数据属性

问题描述 投票:7回答:1

我正在尝试为我的所有data-attribute允许htmlPurifier使用span,但是没有办法...

我有这个字符串:

<p>
    <span data-time-start="1" data-time-end="5" id="5">
       <word class="word">My</word>
       <word class="word">Name</word>
    </span>
    <span data-time-start="6" data-time-end="15" id="88">
       <word class="word">Is</word>
       <word class="word">Zooboo</word>
    </span>
<p>

我的htmlpurifier配置:

$this->HTMLpurifierConfigInverseTransform = \HTMLPurifier_Config::createDefault();
$this->HTMLpurifierConfigInverseTransform->set('HTML.Allowed', 'span,u,strong,em');
$this->HTMLpurifierConfigInverseTransform->set('HTML.ForbiddenElements', 'word,p');
$this->HTMLpurifierConfigInverseTransform->set('CSS.AllowedProperties', 'font-weight, font-style, text-decoration');
$this->HTMLpurifierConfigInverseTransform->set('AutoFormat.RemoveEmpty', true);

我像这样净化我的$value

$purifier = new \HTMLPurifier($this->HTMLpurifierConfigInverseTransform);
var_dump($purifier->purify($value));die;

并且得到这个:

<span>My Name</span><span>Is Zoobo</span>

但是如何在id中保存我的数据属性data-time-startdata-time-endspan

我需要这个:

<span data-time-start="1" data-time-end="5" id="5">My Name</span data-time-start="6" data-time-end="15" id="88"><span>Is Zoobo</span>

我尝试使用此配置进行测试:

$this->HTMLpurifierConfigInverseTransform->set('HTML.Allowed', 'span[data-time-start],u,strong,em');

但是错误消息:

用户警告:元素“ span”中的属性“ data-time-start”不是支持(有关实施此操作的信息,请参阅支持论坛)

感谢您的帮助!

编辑1

我尝试使用此代码行在第一时间允许ID:

$this->HTMLpurifierConfigInverseTransform->set('Attr.EnableID', true);

对我不起作用...

编辑2

对于data-*属性,我添加了这一行,但也什么也没发生...

$def = $this->HTMLpurifierConfigInverseTransform->getHTMLDefinition(true);
$def->addAttribute('sub', 'data-time-start', 'CDATA');
$def->addAttribute('sub', 'data-time-end', 'CDATA');
php filter htmlpurifier
1个回答
9
投票
理解
© www.soinside.com 2019 - 2024. All rights reserved.