perl测试内容,看是否包含HTML

时间:2013-05-16 17:21:32

标签: html perl contains

我想测试用户提交的内容,看看是否包含HTML,我更愿意这样做,而不必编写我自己的正则表达式。有没有人知道这样做的模块或在perl中执行此操作的好方法?

1 个答案:

答案 0 :(得分:2)

您可以查看HTML::Restrict模块允许仅将内容限制为允许的标记的内容。

示例:

use 5.012;
use strict;
use warnings;
use HTML::Restrict;
use Data::Dumper;

my @texts = map { { "has_html", 0, "text", $_ } }
            split(/==cut-here==/, do{ local $/; <DATA> });

my $res = HTML::Restrict->new();

foreach my $text (@texts) {
    my $tmp = $text->{text};
    my $plain = $res->process($tmp);
    $plain =~ s/\s//gs;
    $tmp =~ s/\s//gs;
    $text->{has_html} = $tmp cmp $plain ? "YES" : "NO";
}
say Dumper(\@texts);

__DATA__

    <img src="image.jpg" alt="tricky>text" />

    text with html
==cut-here==

plain

text here

==cut-here==again <!-- a > b --> with html==cut-here==
plain

将检查4个文本块并检测html。如果您配置HTML::Restrict,则可以使用“允许”和“不允许”的HTML标记进行检查。