Php 我如何允许<;音频>;元素与HTML净化器?
如何使用HTML净化器允许元素 我试过Php 我如何允许<;音频>;元素与HTML净化器?,php,html,html5-audio,htmlpurifier,Php,Html,Html5 Audio,Htmlpurifier,如何使用HTML净化器允许元素 我试过$config->set('HTML.Allowed','audio'),但现在它将删除所有其他元素,包括,等 然后我尝试了$def->addAttribute('audio','src','CDATA')但它不起作用。HTML.Allowed是所有允许的标记的白名单,所以您可能想做的是将$config->get('HTML.Allowed')与,audio作为值连接起来 这就是说,HTML净化器的安全性方法是HTML风格感知的——就像在,而不仅仅是白名单标
$config->set('HTML.Allowed','audio')代码>,但现在它将删除所有其他元素,包括,
等
然后我尝试了$def->addAttribute('audio','src','CDATA')
但它不起作用。HTML.Allowed
是所有允许的标记的白名单,所以您可能想做的是将$config->get('HTML.Allowed')
与,audio
作为值连接起来
这就是说,HTML净化器的安全性方法是HTML风格感知的——就像在,而不仅仅是白名单标记和属性一样,它还确保标记在它们所在的上下文中有意义,属性值看起来像预期的那样,这意味着它必须真正理解您提供给它的HTML定义。例如,您不希望在
-标记中嵌入
-标记,这毫无意义;而且您不希望HTML中出现width=“foo”
,这也没有意义
因为据我所知,HTML净化器还不了解HTML5,即,它将告诉您如何添加HTML净化器不知道的标记和属性
引用链接文档中最生动的代码示例(此代码向HTML净化器教授
标记):
需要一些代码:
$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);
[...]
$form = $def->addElement(
'form', // name
'Block', // content set
'Flow', // allowed children
'Common', // attribute collection
array( // attributes
'action*' => 'URI',
'method' => 'Enum#get|post',
'name' => 'ID'
)
);
$form->excludes = array('form' => true);
每个参数对应于我们提出的一个问题。请注意,我们在action属性的末尾添加了一个星号,以指示它是必需的。如果有人指定了一个没有该属性的表单,则标记将被删除。另外,末尾的额外行是一个特殊的额外声明,用于防止表单相互嵌套
一旦您按照这些说明使您的净化程序了解了
,将标签
添加到您的配置白名单将起作用。“它不起作用”是一个描述得不够详细的问题,我建议添加更多信息。