как получить идентификатор видео YouTube из URL

Я пытаюсь проверить, является ли URL-адрес действительным URL-адресом для видео на YouTube, и получить из него идентификатор видео YouTube, поэтому для этого я использую простую функцию разделения JavaScript, однако это имеет некоторые незначительные недостатки, поскольку YouTube имеет несколько URL-адресов. ; с.

Я просматривал другие потоки stackoverflow, но все они поддерживают только один конкретный URL, который мне не нужен.

Мне нужно что-то, что соответствует всем этим URL:

http(s)://www.youtu.be/videoID

http(s)://www.youtube.com/watch?v=videoID

(и, необязательно, любые другие короткие URL-адреса, которые сценарий автоматически определяет, содержит ли он видео на YouTube)

Будем очень благодарны за любые идеи, которые могут быть обработаны браузером быстро / эффективно!

 HackedByChinese14 мая 2012 г., 23:53
 xorinzor14 мая 2012 г., 23:52
отредактировал мой вопрос, мне также нужно проверить, является ли URL допустимым видео на YouTube
 ling09 янв. 2016 г., 21:37

Ответы на вопрос(6)

последний короткий формат:http://youtu.be/NLqAF9hrVbYiframe:http://www.youtube.com/embed/NLqAF9hrVbYiframe (безопасный):https://www.youtube.com/embed/NLqAF9hrVbY объект param:http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_USобъект вставки:http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_USсмотреть:http://www.youtube.com/watch?v=NLqAF9hrVbYusers:http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGoytscreeningroom:http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I любая / вещь / уходит !:http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/2/PPS-8DMrAn4 any / subdomain / too:http://gdata.youtube.com/feeds/api/videos/NLqAF9hrVbY больше параметров:http://www.youtube.com/watch?v=spDj54kf-vY&feature=g-vrecquery может иметь точку:http://www.youtube.com/watch?v=spDj54kf-vY&feature=youtu.be (Источник: Как найти все идентификаторы видео YouTube в строке с помощью регулярных выражений?)

Лучший способ ограничить входные данные.

Удач

 ptguy14 июл. 2016 г., 09:48
Это решение работает со всеми вашими URL / Stackoverflow.com вопросы / 3452546 / ...

Это может быть быстро:

var url = 'http://www.youtu.be/543221'; 
         //http://www.youtube.com/watch?v=SNfYz6Yw0W8&feature=g-all-esi would work also
var a = url.split("v=")[1];
a = a != undefined ? a : url.split("youtu.be/")[1];
b = a.split("&")[0];

переменная с будет иметь ваш идентификатор. Быстро. Регулярное выражение приятнее ... хотя его сложнее читать. Я изменил свой код для учета обоих.

 xorinzor15 мая 2012 г., 00:07
Это в точности то же самое, что и в других темах, однако мне нужно, чтобы URL-адреса youtu.be тоже были проверены
 frosty15 мая 2012 г., 00:15
Пожалуйста, проверьте мой код сейчас. Еще одна строка кода достаточно проста, чтобы проверить, что вы ищете. Я думаю, что это все еще более читабельно, чем регулярное выражение. Тем не менее, я согласен, что регулярное выражение приятнее. Однако, поскольку многие люди не говорят на регулярных выражениях, этот способ может упростить обновление в следующий раз, когда YouTube добавит другой формат URL. Просто мысль

вам стоит взглянуть на API YouTube и попытаться выяснить, есть ли способ получить videoID, анализируя URL через API.

Посмотрите на это ТАКОЕ сообщение:Youtube API - Извлечение идентификатора видео

 xorinzor15 мая 2012 г., 00:06
это действительно то, что я хотел, однако Маска была первой, поэтому я пометил его ответ как ответ
 Joshua Drake16 мая 2012 г., 00:04
+ 1 за указание на существующий вопрос и API, предоставляемый данным сайтом.

попробуйте этот код

var url = "...";
var videoid = url.match((?:youtube(?:-nocookie)?\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11}));
if(videoid != null) {
    console.log("video id = ",videoid[1]);
} else { 
    console.log("The youtube url is not valid.");
}

Регекс отYouTube ID видео регулярное выражение


$url = "http://www.youtube.com/watch?v=YzOt12co4nk&feature=g-vrec"; preg_match('/v=([0-9a-zA-Z]+)/', $url, $matches); $vid = $matches[1];
Теперь у вас будет идентификатор видео: $ vid = YzOt12co4nk;

 xorinzor29 авг. 2012 г., 15:39
несмотря на то, что на вопрос уже был дан ответ, обратите внимание, что речь шла о решении Javascript / JQuery, а не PHP; спасибо за вклад, хотя.
Решение Вопроса

Попробуй это

var url = "...";
var videoid = url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);
if(videoid != null) {
   console.log("video id = ",videoid[1]);
} else { 
    console.log("The youtube url is not valid.");
}

смотри регулярное выражение:

/
(?:https?:\/{2})? // Optional protocol, if have, must be http:// or https://
(?:w{3}\.)?      // Optional sub-domain, if have, must be www.
youtu(?:be)?  // The domain. Match 'youtu' and optionally 'be'. 
\.(?:com|be) // the domain-extension must be .com or .be
(?:\/watch\?v=|\/)([^\s&]+) //match the value of 'v' parameter in querystring from 'watch' directory OR after root directory, any non-space value.
/
 xorinzor14 мая 2012 г., 23:53
Короткий URL-адрес YouTube - это youtu.be как бы выглядело регулярное выражение в этом случае?
 The Mask14 мая 2012 г., 23:57
@ xorinzor: проверить обновление.
 carelesslyChoosy28 нояб. 2016 г., 11:13
Как люди пишут это длинное регулярное выражение?
 xorinzor15 мая 2012 г., 01:36
спасибо, это мне поможет!
 The Mask15 мая 2012 г., 00:38
@ xorinzor: я добавил простое объяснение регулярных выражений.

Ваш ответ на вопрос