Php HtmlPurifier-允许数据属性
我正在尝试为我所有的Php HtmlPurifier-允许数据属性,php,filter,htmlpurifier,Php,Filter,Htmlpurifier,我正在尝试为我所有的span使用htmlPurifier允许一些数据属性,但没有办法 我有这个字符串: <p> <span data-time-start="1" data-time-end="5" id="5"> <word class="word">My</word> <word class="word">Name</word> </span> <sp
span
使用htmlPurifier允许一些数据属性
,但没有办法
我有这个字符串:
<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>
我像这样净化我的$value
:
$purifier = new \HTMLPurifier($this->HTMLpurifierConfigInverseTransform);
var_dump($purifier->purify($value));die;
得到这个:
<span>My Name</span><span>Is Zoobo</span>
我尝试使用此配置进行测试:
$this->HTMLpurifierConfigInverseTransform->set('HTML.Allowed', 'span[data-time-start],u,strong,em');
但是错误消息:
用户警告:元素“span”中的属性“数据时间开始”不正确
支持(有关实现此功能的信息,请参阅支持
论坛)
谢谢你的帮助
编辑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');
HTML净化器了解HTML的结构,并将此知识用作其白名单过程的基础。如果将标准属性添加到白名单中,则白名单不允许该属性包含任意内容-它理解该属性,并且仍然会拒绝没有意义的内容 例如,如果您的某个属性包含数值,HTML净化器仍然会拒绝尝试为该属性输入值“foo”的HTML 如果您添加自定义属性,仅仅将其添加到白名单并不能教会HTML净化器如何处理这些属性:它可以在这些属性中期望哪些数据?哪些数据是恶意的 这里有大量的文档说明如何告诉HTML净化器自定义属性的结构: 作为配置的一部分,
的“target”属性有一个代码示例
我希望这有帮助 谢谢你完整的回答!我第一次尝试启用ID,但是$this->HTMLpurifierConfigInverseTransform->set('Attr.EnableID',true)代码>不工作。。。然后对于允许特殊属性,我会看到,但这似乎对我来说很难。。。我是个新手…@Zagloo:你有没有确保给你的定义一个ID和修订号(我隐约记得没有这样做会导致问题),并在你处理定义缓存时禁用它?不幸的是,除了版本不匹配之外,我不知道为什么Attr.EnableID
对您不起作用,但它几乎永远都是HTML净化器的一部分,所以我不这么认为(见:另见本帖:
$this->HTMLpurifierConfigInverseTransform->set('Attr.EnableID', true);
$def = $this->HTMLpurifierConfigInverseTransform->getHTMLDefinition(true);
$def->addAttribute('sub', 'data-time-start', 'CDATA');
$def->addAttribute('sub', 'data-time-end', 'CDATA');
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top');
$def->addAttribute('span', 'data-time-start', 'Number');
$def->addAttribute('span', 'data-time-end', 'Number');