perl 测试内容以查看是不是包含 HTML
Posted
技术标签:
【中文标题】perl 测试内容以查看是不是包含 HTML【英文标题】:perl test content to see if contains HTMLperl 测试内容以查看是否包含 HTML 【发布时间】:2013-05-11 17:07:59 【问题描述】:我想测试用户提交的内容以查看是否包含 html,并且我更愿意这样做而不必编写自己的正则表达式。有谁知道在 perl 中执行此操作的模块或执行此操作的好方法?
【问题讨论】:
您应该检查<
和>
字符。 if ($content =~ /[<>]/) ..
@mpapec - 如果提交的内容中有以下文字:“1 2”怎么办?
请问你为什么想知道?
它仍然是 html,虽然无效。 :) 我会看看search.cpan.org/~gaas/HTML-Parser-3.71/lib/HTML/Entities.pm
在我看来像 XY problem...
【参考方案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" />
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。编辑了示例。以上是关于perl 测试内容以查看是不是包含 HTML的主要内容,如果未能解决你的问题,请参考以下文章