解析youtube输入链接并使用jquery获取youtube ID?

时间:2011-09-29 08:23:05

标签: jquery parsing video youtube

我知道很多人都会问这个问题,但不幸的是我无法解决我的问题。

我在textarea编辑器中输入了这个代码来输入youtube链接:

{name:'youtube', key:'Y', replaceWith:'[youtube][![Youtube video Url]!][/youtube]'},

它会在弹出窗口中询问youtube视频网址,之后会将网址放在[youtube]和[/ youtube]之间。

我想添加一个youtube解析器然后如果成员放置youtube网址,它会解析网址并获取youtube视频ID并将其输入文本区域,如下所示:

[youtube] ID [/ youtube]

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

function getVideoId(url){
    if(url.indexOf('?') === -1)
        return null;
    var query = decodeURI(url).split('?')[1];
    var params = query.split('&');      
    for(var i=0,l = params.length;i<l;i++)
        if(params[i].indexOf('v=') === 0)
            return params[i].replace('v=','');
    return null;
}

  var url = "http://www.youtube.com/watch?v=yV3i6OoiR4w&feature=BFa&list=PL4A312BE02BA06BB7&lf=bf_play";
  alert(getVideoId(url));

更新:另一种解决方案是使用正则表达式:

var url = "http://www.youtube.com/watch?v=yV3i6OoiR4w&feature=BFa&list=PL4A312BE02BA06BB7&lf=bf_play";
var videoUrl = url.replace(/^.*?(\?|&)(v=([^&]+)).*$/i,'$3');

答案 1 :(得分:5)

youtube网址有一个新缩短的网址格式......这是一个更新的脚本,可以容纳这两种类型。

function getVideoId(url){
    if(url.indexOf('?') != -1 ) {
        var query = decodeURI(url).split('?')[1];
        var params = query.split('&');
        for(var i=0,l = params.length;i<l;i++)
            if(params[i].indexOf('v=') === 0)
                return params[i].replace('v=','');
    } else if (url.indexOf('youtu.be') != -1) {
        return decodeURI(url).split('youtu.be/')[1];
    }
    return null;
}
var urlLONG = "http://www.youtube.com/watch?v=UF8uR6Z6KLc&feature=feedlik";
var urlSHORT = "http://youtu.be/UF8uR6Z6KLc";
alert(getVideoId(urlLONG));
alert(getVideoId(urlSHORT));

P.S。我是一名Flash开发人员,并且只在AS3中对此进行过测试,但这样的简单内容在两种语言中都是相同的。如果你想在AS3中使用它,只需将alert()与trace()交换。

快乐的编码!

答案 2 :(得分:0)

function getYoutubeId(str){
   if(str.indexOf('youtube.com/') != -1 || str.indexOf('youtu.be/') != -1){
      var idStr = str.match(/([\&|\?]v\=|youtu\.be\/)([^\&\/\?]*)/);
      if(typeof(idStr[2]) != 'undefined'){
         return idStr[2]; 
      };
   };
   return null;
};