有没有办法为模块提供白名单以保留某些标签?
现在标记如下
<div><b>test</b></div>
使用此代码删除
my $hs = HTML::Strip->new();
open FILE, "<test.markup";
$raw_html=<FILE>;
my $clean_text = $hs->parse( $raw_html );
$hs->eof;
生成
以下的输出test
但是,我想在下面添加<b>
标记白名单输出。
<b>test</b>
编辑,一个解决方案
my $hss = HTML::StripScripts::Parser->new(
{
Context => 'Inline',
EscapeFiltered => 0,
BanAllBut => [qw(i b u)],
},
strict_comment => 0,
strict_names => 0,
);
$hss->filter_html("<div><b>test</b></div>");
$cooked = $hss->filtered_document;
$cooked =~ s/<!--filtered-->//g;
print $cooked; // <b>test</b>
答案 0 :(得分:2)
读取Perl包装器和底层XS代码,没有白名单功能。
可以添加,但不是100%微不足道 - 代码已经检查了诸如<script>
之类的“strip”标签的标签名称,并且只有200LOC。
作为另一种方法,来自O'Reilly的RegEx书籍有一个正则表达式配方,可以去除HTML标签(包括白名单功能)。
如果您不想使用RegEx,请尝试HTML::StripScripts::Parser
- 它似乎使用白名单