从youtube网址中提取ID以嵌入视频

时间:2014-06-10 18:59:19

标签: jquery

我尝试从youtube网址中提取视频ID,以便将提交的视频嵌入我的网站。

这样人们就可以提交普通网址而不是嵌入代码。

$(document).ready(function () {
                                $('.video-field').html(function(i,v){
                                    var id = v.split('watch?v=')[1]; // get the id so you can add to iframe
                                    var be = v.split('youtu.be/')[2];
                                    return '<div class="fluid-width-video-wrapper" style="padding-top: 56.2%;"><iframe width="560" height="315" src="http://www.youtube.com/embed/' + id + '" frameborder="0" allowfullscreen></iframe></div>';



                                    return '<div class="fluid-width-video-wrapper" style="padding-top: 56.2%;"><iframe width="560" height="315" src="http://www.youtube.com/embed/' + be + '" frameborder="0" allowfullscreen></iframe></div>';



});                                         
                                }); 

Youtube网址有两种版本,请注意?v = + videoID和youtu.be/ + videoID。

两者都具有相同的ID,只是不同的链接,具体取决于您是从浏览器栏还是在YouTube上的共享标签中复制的。

第二个回归&#39; undefined&#39;在输出中为我。

2 个答案:

答案 0 :(得分:1)

我相信这两个指数应该是[1]。取代&#39; be&#39; var with

var be = v.split('youtu.be/')[1];

你应该好。

也应该添加一个if来评估&#39; v&#39;论点,像这样:

$(document).ready(function () {
    $('.video-field').html(function(i,v){
        var id;
        if(v.indexOf('watch?v=') > 0){
            id = v.split('watch?v=')[1];
        } else if(v.indexOf('youtu.be/') > 0) {
            id = v.split('youtu.be/')[1];
        }
        return '<div class="fluid-width-video-wrapper" style="padding-top: 56.2%;"><iframe width="560" height="315" src="http://www.youtube.com/embed/' + id + '" frameborder="0" allowfullscreen></iframe></div>';
    });                                         
});

答案 1 :(得分:0)

尝试使用regular expressions

在这种情况下,您可能希望执行以下操作:

watch\?v=|youtu\.be(.*)

阅读正则表达式以查看符号的含义(我使用or和捕获表达式)。