[英]Remove html tag from an html content using perl HTML::Strip
我正在尝试删除html内容的标签,而不更改其格式。 我已经尝试了HTML :: Strip和HTML :: Restrict,但是没有给出预期的输出。
我需要获得输出为
Heading
point 1
point 2
这是我的代码
use strict;
use warnings;
use HTML::Restrict;
use HTML::Strip;
my $hs = HTML::Strip->new();
my $hr = HTML::Restrict->new();
my $tree = '<div><span itemprop="description">Heading<ul><li>point 1</li><li>point 2</li></ul></span></div>';
my $processed = $hr->process($tree);
my $clean_text = $hs->parse($tree);
print "$clean_text\n\n";
print "$processed\n\n";
但我得到的输出为
Heading point 1 point 2
请给我一些建议。
好吧,HTML就是这样做的-格式化文本。 一旦摆脱了HTML标记,就也摆脱了文本格式。
以这种方式思考-现在,您只想保留格式中的换行符。 解析器应该如何知道如何在换行符中转换<ul><li>
?
如果您以后希望保留文本的**bold**
怎么办?
作为潜在的替代解决方案,请查看pandoc
或者,使用XML::DOM::Lite
处理器解析HTML的XML::DOM::Lite
,并将单个HTML元素转换为等效的文本文件格式
这并没有完全得到所需的输出,对于所需的一般情况(html->文本格式),您可以查看HTML :: FormatText 。
C:\Users\User>perl -MHTML::TreeBuilder -MHTML::FormatText -E "
my $html = '<div><span itemprop="description">Heading<ul><li>point 1</li><li>point 2</li></ul></span></div>';
my $tree = HTML::TreeBuilder->new_from_content($html);
say $tree->format(HTML::FormatText->new);
"
给出输出:
Heading
* point 1
* point 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.