使用perl删除两个注释之间的html代码

使用perl删除两个注释之间的html代码,第1张

概述说我有一些html从文件中保存在字符串中使用perl,如下所示 <tbody> <tr> <td width="650"> <!--MyComment--> <a href="http://myurl.com"><img src="myimage.png" > </a> <!--MyComment--> </td> </tr> </tbo 说我有一些HTML从文件中保存在字符串中使用perl,如下所示

<tbody>  <tr>    <td wIDth="650">    <!--MyComment-->        <a href="http://myurl.com"><img src="myimage.png"  > </a>   <!--MyComment-->   </td>   </tr>  </tbody>.........

在两条评论之间删除HTML代码的最佳方法是什么
我在考虑使用HTML :: tree perl模块

解决方法 一种选择是使用拉解析器.这里有一个HTML :: TokeParser示例.它使用两个循环,第一个循环用于查找注释的第一个外观.它打印它找到的每个标签,直到那里.第二个遍历所有标记,直到第二次出现相同类型的注释,并且不打印任何内容.

script.pl的内容:

#!/usr/bin/env perluse warnings;use strict;use HTML::TokeParser;my $p = HTML::TokeParser->new ( shift );while ( my $token = $p->get_token ) {     printf qq|%s|,$token->[0] =~ m/S|E|PI/ ? $token->[ $#$token ] : $token->[1];    if ( $token->[0] eq q|C| && $token->[1] =~ m/(?i)MyComment/ ) {     ## Here begins the comment.        while ( my $token2 = $p->get_token ) {             if ( $token2->[0] eq q|C| && $token2->[1] =~ m/(?i)MyComment/ ) {             ## Here ends the comment.                printf qq|%s|,$token2->[1];                last;            }           }       }   }

运行它像:

perl script.pl HTMLfile

产量:

<HTML><head><Title>Title</Title></head><body><tbody>  <tr>    <td wIDth="650">    <!--MyComment--><!--MyComment-->   </td>   </tr>  </tbody></body></HTML>
总结

以上是内存溢出为你收集整理的使用perl删除两个注释之间的html代码全部内容,希望文章能够帮你解决使用perl删除两个注释之间的html代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1239383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存