проанализировать входные ссылки YouTube и получить идентификатор YouTube с помощью jquery? - PullRequest
2 голосов
/ 29 сентября 2011

Я знаю, что многие люди часто задавали подобные вопросы, но, к сожалению, я не мог разобраться со своей проблемой.

У меня есть этот код в моем текстовом редакторе для ввода ссылки на YouTube:

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

Он запросит URL-адрес видео YouTube во всплывающем окне, после чего он поместит URL-адрес между [youtube] и [/youtube].

.

Я бы хотел, чтобы к нему добавили парсер youtube, а затем, если участник добавит URL-адрес youtube, он проанализирует URL-адрес и получит идентификатор видео YouTube и введет его в текстовую область следующим образом:

[youtube] ID [/ youtube]

Заранее спасибо за помощь.

Ответы [ 3 ]

5 голосов
/ 07 октября 2011

Существует новый сокращенный формат URL для URL 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));

PS Я разработчик флеш-памяти и тестировал это только в AS3, но простотакие вещи идентичны на обоих языках.если вы хотите использовать его в AS3, просто замените alert () на trace ().

Удачного кодирования!

5 голосов
/ 29 сентября 2011
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');
0 голосов
/ 10 декабря 2016
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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...