代码之家  ›  专栏  ›  技术社区  ›  Grey Panther

为什么第一次更换没有任何效果?

  •  0
  • Grey Panther  · 技术社区  · 17 年前

    use strict;
    use warnings;
    use LWP::Simple;
    
    my $youtubeCN = get(shift @ARGV);
    die("Script tag not found!\n")
     unless $youtubeCN =~ /<script src="(.*?)">/;
    my $youtubeScr = $1;
    # WHY ???
    $youtubeScr =~ s/&amp;/&/g;
    $youtubeScr =~ s/&amp;/&/g;
    my $gmodScr = get($youtubeScr);
    
    $gmodScr =~ s/http:\/\/\?container/http:\/\/www.gmodules.com\/ig\/ifr\?/;
    print "<script type=\"text/javascript\">$gmodScr</script>\n"; 
    

    :我这样称呼这个脚本:

    perl bork_youtube_channel.pl 'http://www.youtube.com/user/pennsays'
    

    :事实证明,URL毕竟是双重编码的。谢谢大家的帮助!

    1 回复  |  直到 17 年前
        1
  •  7
  •   Jon Skeet    17 年前

    我怀疑,如果你看看输入数据

    use strict;
    use warnings;
    
    my $youtubeScr = "a&amp;b";
    
    $youtubeScr =~ s/&amp;/&/g;
    print $youtubeScr;
    print "\n";
    
    $youtubeScr =~ s/&amp;/&/g;
    print $youtubeScr;
    print "\n";
    

    a&b
    a&b
    

    你确定你的原始文本不是 foo&amp;amp;bar ?这将产生

    foo&amp;bar
    foo&bar
    

    PS我的perl fu烂透了。对于上述代码中的任何语言滥用表示歉意,但我认为它仍然会有所帮助:)