Идентификатор видео Vimeo YouTube из встроенного кода или URL-адреса с регулярным выражением PHP RegEx

Я хочу получить идентификатор видео для YouTube или Vimeo через его код Embed или URL, любое решение для этого с PHP?

Вы можете использовать preg_match для получения идентификаторов. Я расскажу о самих выражениях позже в этом ответе, но вот основная идея использования preg_match:

preg_match('expression(video_id)', "http://www.your.url.here", $matches); $video_id = $matches[1]; 

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

  1. Для URL-адресов YouTube, таких как http://www.youtube.com/watch?v=89OpN_277yY , вы можете использовать это выражение:

     v=(.{11}) 
  2. Коды встраивания YouTube могут выглядеть так (некоторые посторонние вещи обрезаны):

     <object width="640" height="390"> <param name="movie" value="http://www.youtube.com/v/89OpN_277yY?fs=... ... </object> 

    Или вот так:

     <iframe ... src="http://www.youtube.com/embed/89OpN_277yY" ... </iframe> 

    Таким образом, выражение для получения идентификатора из любого стиля будет таким :

     \/v\/(.{11})|\/embed\/(.{11}) 
  3. Насколько мне известно, URL-адреса Vimeo выглядят как http://vimeo.com/<integer> . Самое низкое, что я нашел, было просто http://vimeo.com/2 , и я не знаю, есть ли верхний предел, но сейчас я предполагаю, что он ограничен 10 цифрами. Надеюсь, кто-то может исправить меня, если они знают о деталях. Это выражение может быть использовано:

     vimeo\.com\/([0-9]{1,10}) 
  4. Код Vimeo embed принимает эту форму:

     <iframe src="http://player.vimeo.com/video/<integer>" width="400" ... 

    Таким образом, вы можете использовать это выражение:

     player\.vimeo\.com\/video\/([0-9]{1,10}) 

    В качестве альтернативы, если длина цифр может в конечном итоге превышать 10, вы можете использовать:

     player\.vimeo\.com\/video/([0-9]*)" 

    Имейте в виду, что " нужно будет экранировать с помощью \ если вы заключите выражение в двойные кавычки.


Итак , я не уверен, как вы хотели реализовать это, но вы можете либо объединить все выражения с | , или вы можете сопоставить каждый из них отдельно. Добавьте комментарий к этому ответу, если вы хотите, чтобы я предоставил дополнительную информацию о том, как объединить выражения.

Существует еще один аналогичный [для youtube only], который здесь может быть полезен. PHP Regex для получения идентификатора видео youtube?

Согласно последнему стандарту youtube, вы можете использовать следующий код для извлечения идентификатора видео из встраиваемого кода.

 $embed = '<iframe src="//www.youtube.com/embed/n6WYu-pSXH8" frameborder="0"></iframe>'; preg_match('~embed/(.*?)"~', $embed, $output); echo $output[1]; 

спасибо