gpt4 book ai didi

php - HTMLPurifier - 更改属性值而不是删除

转载 作者:行者123 更新时间:2023-11-28 00:41:48 26 4
gpt4 key购买 nike

htmlpurifier 删除不允许值的属性。例如;

<div contenteditable="true"></div>

我为contenteditable属性设置了div标签的权限,所以值只能是false。但如果 contenteditable="true"false 以外的任何内容,htmlpurifier 会完全删除该属性。我不喜欢这种行为。我想让 htmlpurifier 始终保持 contenteditable 属性并将其设置为 false

有这种可能吗?

实际配置

$config = \HTMLPurifier_Config::createDefault();

$config->set('HTML.Allowed', 'div[contenteditable]');
$config->set('HTML.TargetNoopener', false);
$config->set('HTML.TargetNoreferrer', false);

$def = $config->getHTMLDefinition(true);
$def->addAttribute('div', 'contenteditable', 'Enum#false');

此配置的结果

输入:

<div contenteditable="true"></div>

输出:

<div></div>

期望的结果

输入:

<div contenteditable="true"></div>

输出:

<div contenteditable="false"></div>

最佳答案

我认为没有一种简单的方法可以将属性的处理方式更改为强制使用已知良好的值,而不是仅仅删除不良值。您可能需要编写一个属性转换;像这样:

class HTMLPurifier_AttrTransform_ContentEditable extends HTMLPurifier_AttrTransform
{
public function transform($attr, $config, $context)
{
if (array_key_exists('contenteditable', $attr)) {
$attr['contenteditable'] = 'true';
}
return $attr;
}
}

使用/安装类:

$htmlDef = $htmlPurifierConfiguration->getHTMLDefinition(true);
$tag = $htmlDef->addBlankElement('div');
$tag->attr_transform_post[] = new HTMLPurifier_AttrTransform_ContentEditable();
// purify down here

关于php - HTMLPurifier - 更改属性值而不是删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com