my $tf = HTML::TagFilter->new( allow => { img => { src => [] },b => { all => [] },i => { all => [] },em => { all => [] },u => { all => [] },s => { all => [] },},strip_comments => 1,skip_xss_protection => 1,);
现在我传这样的HTML
<HTML><head><style><!--..hmmessage P{margin:0px=3Bpadding:0px}body.hmmessage{Font-size: 12pt=3BFont-family:Calibri}--></style></head><body class=3D'hmmessage'><div dir=3D'ltr'>Message content here! =</div></body></HTML>
输出是
<!--..hmmessage P{margin:0px;padding:0px}body.hmmessage{Font-size: 12pt;Font-family:Calibri}-->Message content here
如果你查看输出你发现样式标签的内容仍然存在,我不知道为什么?,那么任何人都可以告诉我为什么样式标签内容在通过过滤器后仍然存在?
解决方法 它是HTML :: TagFilter的未记录的“特征”,它是子类化HTML::Parser
的结果.后者解释< style>和< script>将内容标记为cdaTA并默认解析它们,忽略允许和拒绝标记: The script and style Tags will always nest properly since their content is parsed in cdaTA mode.
Source
要解决这个问题,只需调用即可
$tf->ignore_elements('style');
在HTML上调用parse方法之前 – 它会忽略样式标记并执行您想要的 *** 作.请注意,在您的示例代码中,如果您使用foo替换样式,则不会打印任何注释.
@H_301_2@ 总结以上是内存溢出为你收集整理的在HTML :: TagFilter中需要帮助,摆脱样式标记内容全部内容,希望文章能够帮你解决在HTML :: TagFilter中需要帮助,摆脱样式标记内容所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)