Я хочу получить идентификатор видео для YouTube или Vimeo через его код Embed или URL, любое решение для этого с PHP?
Вы можете использовать preg_match для получения идентификаторов. Я расскажу о самих выражениях позже в этом ответе, но вот основная идея использования preg_match:
preg_match('expression(video_id)', "http://www.your.url.here", $matches); $video_id = $matches[1];
Вот разбивка выражений для каждого типа возможного ввода, о котором вы просили. Я включил ссылку для каждого, показывающую некоторые тестовые примеры и результаты.
Для URL-адресов YouTube, таких как http://www.youtube.com/watch?v=89OpN_277yY
, вы можете использовать это выражение:
v=(.{11})
Коды встраивания 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})
Насколько мне известно, URL-адреса Vimeo выглядят как http://vimeo.com/<integer>
. Самое низкое, что я нашел, было просто http://vimeo.com/2
, и я не знаю, есть ли верхний предел, но сейчас я предполагаю, что он ограничен 10 цифрами. Надеюсь, кто-то может исправить меня, если они знают о деталях. Это выражение может быть использовано:
vimeo\.com\/([0-9]{1,10})
Код 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];
спасибо