首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >符合HTML5的超文本标记语言过滤器

符合HTML5的超文本标记语言过滤器
EN

Stack Overflow用户
提问于 2011-04-15 02:29:58
回答 5查看 7.1K关注 0票数 57

有没有一种简单的方法来为HTMLPurifier添加HTML5规则集?

HP可以通过以下方式configured to识别新标签:

代码语言:javascript
复制
// setup configurable HP instance
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.DefinitionID', 'html5 draft');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // no caching
$def = $config->getHTMLDefinition(true);

// add a new tag
$form = $def->addElement(
  'article',   // name
  'Block',     // content set
  'Flow',      // allowed children
  'Common',    // attribute collection
  array(       // attributes
  )
);

// add a new attribute
$def->addAttribute('a', 'contextmenu', "ID");

然而,这显然是一项工作。因为有很多新的HTML5标签和属性需要注册。新的全局属性应该可以与现有的HTML4标签组合。(很难从文档中判断如何扩充核心规则)。那么,是否有更有用的配置格式/数组结构来提供新的和更新的tag+attribute+context配置(内联/块/空/流/.)进入HTMLPurifier吗?

代码语言:javascript
复制
# mostly confused about how to extend existing tags:
$def->addAttribute('input', 'type', "...|...|...");

# or how to allow data-* attributes (if I actually wanted that):
$def->addAttribute("data-*", ...

当然,并不是所有新的HTML5标签都适合不受限制的许可。HTMLPurifier完全是关于内容过滤的。定义值约束就是它所在的位置。--例如,当<canvas>出现在用户内容中时,它可能并不是什么大事。因为没有Javascript (惠普已经过滤掉了Javascript),它充其量也是没用的。但其他标签和属性可能并不理想;因此,灵活的配置结构对于启用/禁用标签及其相关属性是必不可少的。

(我想我应该更新一些研究...)。但是仍然没有适合HP配置的实用的概要/规范(不,XML不是)。

(呃,HTML5也不再是草稿了。)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5667857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档