用什么简单的Perl脚本来解析带有自定义标记的HTML文档(Perl解释器)?
好的,这就是我正在做的。我正在为以自定义扩展名(.cpm)结尾的文档制作一个perl解释器。我环顾四周,发现用什么简单的Perl脚本来解析带有自定义标记的HTML文档(Perl解释器)?,perl,html-parser,Perl,Html Parser,好的,这就是我正在做的。我正在为以自定义扩展名(.cpm)结尾的文档制作一个perl解释器。我环顾四周,发现 看来这是一条路要走。我所要求的是一个简单的教程来解析带有特殊标记的文档。例如,我想要一个演示如何解析HTML文档的东西,但是每当遇到时,它就会用替换它 我想要的一个例子- 这是HTML语言 说“这是利亚姆语” 使用解析的重要部分是为正确的处理程序分配正确的argspec。示例程序: #!/usr/bin/env perl use strict; use warnings;
时,它就会用
替换它
我想要的一个例子-
这是HTML语言
说“这是利亚姆语”
使用解析的重要部分是为正确的处理程序分配正确的argspec
。示例程序:
#!/usr/bin/env perl
use strict;
use warnings;
use HTML::Parser;
my $html;
sub replace_tagname {
my ( $tagname, $event ) = @_;
if ( $tagname eq 'liamslanguage' ) {
$tagname = 'b';
}
if ( $event eq 'start' ) {
$html .= "<$tagname>";
}
elsif ( $event eq 'end' ) {
$html .= "</$tagname>";
}
}
my $p = HTML::Parser->new(
'api_version' => 3,
'start_h' => [ \&replace_tagname, 'tagname, event' ],
'default_h' => [ sub { $html .= shift }, 'text' ],
'end_h' => [ \&replace_tagname, 'tagname, event' ],
);
$p->parse( do { local $/; <DATA> } );
$p->eof();
print $html;
__DATA__
<html>
This is HTML talking
<liamslanguage>say "This is Liams language speaking"</liamslanguage>
</html>
#/usr/bin/env perl
严格使用;
使用警告;
使用HTML::解析器;
我的$html;
子替换标记名{
我的($tagname,$event)=@;
if($tagname eq'liamslanguage'){
$tagname='b';
}
如果($event eq‘start’){
$html.=”;
}
elsif($event eq‘end’){
$html.=”;
}
}
my$p=HTML::解析器->新建(
“api_版本”=>3,
'start\u h'=>[\&replace\u标记名,'标记名,事件'],
'default_h'=>[sub{$html.=shift},'text'],
'end\u h'=>[\&replace\u标记名,'tagname,event'],
);
$p->parse(do{local$/;});
$p->eof();
打印$html;
__资料__
这是HTML语言
说“这是Liams的语言”
您想解析的html示例如何?非常感谢。这是非常有用和有益的。竖起大拇指!哦,还有一个问题。如何获取标记之间的数据?Liam E-p:对开始处理程序和结束处理程序使用不同的回调。在启动处理程序中,设置一个标志,以便知道标记已启动。在默认处理程序的回调中,检查是否已设置该标志。如果是,则文本位于标记之间。在结束处理程序中,重置标志。也许还有别的办法。请阅读文档。利亚姆E-p:我已经更新了代码,以便它能够处理结束标记。不知怎的,我忽略了它。谢谢,它工作得很好。我首先使用一个.htaccess文件来使用这个脚本来处理.cpm文件。然后使用“$ENV{'PATH_TRANSLATED'};”我可以找到引用的文件并打开它。然后我用这个脚本解析它。