Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl HTML::Strip白名单_Perl_Html Parsing_Perl Module - Fatal编程技术网

Perl HTML::Strip白名单

Perl HTML::Strip白名单,perl,html-parsing,perl-module,Perl,Html Parsing,Perl Module,有没有办法给模块一个白名单,让它保留某些标签 现在标记如下 <div><b>test</b></div> 然而,我想获得下面列出的白名单输出 <b>test</b> 测试 编辑,一个解决方案 使用 my$hss=HTML::StripScripts::Parser->new( { 上下文=>'Inline', EscapeFiltered=>0, BanAllBut=>[qw(i b u)],则, }, 严格的注释=>

有没有办法给模块一个白名单,让它保留某些标签

现在标记如下

<div><b>test</b></div>
然而,我想获得下面列出的白名单输出

<b>test</b>
测试
编辑,一个解决方案

使用

my$hss=HTML::StripScripts::Parser->new(
{
上下文=>'Inline',
EscapeFiltered=>0,
BanAllBut=>[qw(i b u)],则,
},
严格的注释=>0,
严格的_名称=>0,
);
$hss->filter_html(“测试”);
$cooked=$hss->已过滤的_文档;
$cooked=~s///g;
打印$cooked;//测试

读取Perl包装器和底层XS代码时,没有白名单功能

可以添加,尽管不是100%的琐碎-代码已经检查了标签名,如
,并且只有200LOC


作为另一种方法,来自O'Reilly的RegexBook有一个正则表达式配方,可以剥离HTML标记(包括白名单功能)



如果你不想弄乱正则表达式,试试看——它似乎使用了白名单

谢谢。我使用了HTML::StripScripts::解析器解决方案。
test
<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>