perl测试内容以查看是否包含HTML

perl测试内容以查看是否包含HTML,html,perl,contains,Html,Perl,Contains,我想测试用户提交的内容,看看是否包含HTML,我更愿意这样做,而不必编写自己的正则表达式。有人知道一个模块可以这样做吗?或者在perl中有一个很好的方法可以这样做吗?您可以检查模块允许什么,将内容限制在允许的标记上 例如: use 5.012; use strict; use warnings; use HTML::Restrict; use Data::Dumper; my @texts = map { { "has_html", 0, "text", $_ } }

我想测试用户提交的内容,看看是否包含HTML,我更愿意这样做,而不必编写自己的正则表达式。有人知道一个模块可以这样做吗?或者在perl中有一个很好的方法可以这样做吗?

您可以检查模块允许什么,将内容限制在允许的标记上

例如:

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
使用5.012;
严格使用;
使用警告;
使用HTML::Restrict;
使用数据::转储程序;
my@text=map{{“has_html”,0,“text”,${}
拆分(/==cut here==/,do{local$/;});
my$res=HTML::Restrict->new();
foreach my$text(@text){
my$tmp=$text->{text};
我的$plain=$res->process($tmp);
$plain=~s/\s//gs;
$tmp=~s/\s//gs;
$text->{has_html}=$tmp cmp$plain?“是”:“否”;
}
说Dumper(\@文本);
__资料__
文本“/>
带有html的文本
==切到这里==
平原
此处文本
==在此处剪切==再次使用html==在此处剪切==
平原

将检查4个文本块并检测html。如果您配置
html::Restrict
,您也可以检查“允许”和“不允许”html标记。

您应该检查
字符。
如果($content=~/[]/){..}
@mpapec-如果提交的内容中有以下文本怎么办:1<2和3>2?请问您为什么想知道?它仍然是html,但无效。:)我会看一看对我来说看起来像一个…好吧,这会删除HTML,但我只需要知道内容是否包含HTML。在我将内容放入HTML::Restrict和after之前,我已经尝试过比较内容,但是HTML::Restrict也会删除尾随的新行,因此出现了一个问题,因为它可能会说前后不相等(意味着删除了HTML),当真的有一个额外的新的line@srchulo您可以删除这两个文件中的所有空白,然后进行比较。如果它们相同-不包含HTML。编辑示例。