从 HTML 片段中删除任何视频



我有一个(可能不符合任何标准)带有嵌入式视频的HTML片段。问题是删除视频的子片段。

预计视频遵循以下格式:

<div data-oembed-url="https://www.youtube.com/watch?v=XXX&amp;feature=youtu.be"><iframe allowfullscreen="allowfullscreen" frameborder="0" height="270" src="https://www.youtube.com/embed/XXX?feature=oembed" tabindex="-1" width=" 480"></iframe></div>

我完全不确定是否所有数据都遵循此方案。

我认为任何仅包含视频的divp也应该被删除。

请帮助编写Perl代码以删除视频。你建议使用哪个 Perl 模块进行解析?

sub RemoveVideo {
  my ($str) = @_;
  my $attrRe = qr/s*(?<name>bS+b)s*=s*(?<value>"[^"]*"|'[^']*'|[^"'<>s]+)s*/;
  my $iframeRe = qr{<iframeb($attrRe)*>s*</iframes*>|<iframeb($attrRe)*s*/>}i;
  my $divRe = qr{<divb($attrRe)*>s*$iframeRes*</divs*>s*}i;
  my $pRe = qr{<pb($attrRe)*>s*$iframeRes*</ps*>s*}i;
  $str =~ s/$divRe//gms;
  $str =~ s/$pRe//gms;
  $str =~ s/$iframeRe//gms; # "голый" iframe (не внутри дива)
  return $str;
}
my $Test = <<EOF;
XXX
<IFRAME allowfullscreen="allowfullscreen" frameborder="0" height="270" src="https://www.youtube.com/embed/XXX?feature=oembed" tabindex="-1" width=" 480"></iframe>
<div data-oembed-url="https://www.youtube.com/watch?v=XXX&amp;feature=youtu.be"><iframe allowfullscreen="allowfullscreen" frameborder="0" height="270" src="https://www.youtube.com/embed/XXX?feature=oembed" tabindex="-1" width=" 480"></iframe></div>
<p data-oembed-url="https://www.youtube.com/watch?v=XXX&amp;feature=youtu.be"><iframe allowfullscreen="allowfullscreen" frameborder="0" height="270" src="https://www.youtube.com/embed/XXX?feature=oembed" tabindex="-1" width=" 480"></iframe></p>
YYY
EOF
print RemoveVideo($Test);

相关内容

  • 没有找到相关文章

最新更新