【问题标题】:perl test content to see if contains HTMLperl 测试内容以查看是否包含 HTML
【发布时间】:2013-05-11 17:07:59
【问题描述】:

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

【问题讨论】:

标签: html perl contains


【解决方案1】:

您可以检查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 标签。

【讨论】:

  • 很好,删除了 HTML,但我只需要知道内容是否包含 HTML。我尝试在通过 HTML::Restrict 和之后比较内容,但 HTML::Restrict 也会删除尾随的新行,因此会出现问题,因为它可能会说之前和之后不相等(暗示那里已删除 HTML),而实际上只有一个额外的新行
  • @srchulo 您可以从两者中删除所有空格并在之后进行比较。如果它们相同 - 不包含 HTML。编辑了示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
相关资源
最近更新 更多