【问题标题】:Removing any videos from a HTML fragment从 HTML 片段中删除任何视频
【发布时间】:2019-01-02 16:44:13
【问题描述】:

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

预计视频遵循以下格式:

<div data-oembed-url="https://www.youtube.com/watch?v=XXX&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 模块进行解析?

【问题讨论】:

  • 尝试使用 Mojo::DOM
  • 您说您不确定所有数据是否都遵循此方案,但是,tbh,除非您知道某些(或某些事物)专门标识您要删除的标签,并且永远不会出现在您想要的标签中坚持下去,你就会挣扎。
  • @TomMelly 嗯,我可能会删除所有 iframe
  • 你试过什么?你有什么问题?请向我们展示您的代码。
  • @DaveCross 我的主要问题是选择一个 Perl 模块来完成这项任务。因为不知道用哪个模块,所以还没写代码

标签: html youtube perl video-embedding


【解决方案1】:
sub RemoveVideo {
  my ($str) = @_;

  my $attrRe = qr/\s*(?<name>\b\S+\b)\s*=\s*(?<value>"[^"]*"|'[^']*'|[^"'<>\s]+)\s*/;
  my $iframeRe = qr{<iframe\b($attrRe)*>\s*</iframe\s*>|<iframe\b($attrRe)*\s*/>}i;
  my $divRe = qr{<div\b($attrRe)*>\s*$iframeRe\s*</div\s*>\s*}i;
  my $pRe = qr{<p\b($attrRe)*>\s*$iframeRe\s*</p\s*>\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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2016-09-21
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    相关资源
    最近更新 更多