Вы можете использовать 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>
Таким образом, выражение для получения идентификатора из любого стиля будет this :
\/v\/(.{11})|\/embed\/(.{11})
URL-адреса Vimeo , насколько я могу судить, выглядят как http://vimeo.com/<integer>
. Самый низкий уровень, который я нашел, был просто http://vimeo.com/2
, и я не знаю, есть ли верхний предел, но сейчас я предполагаю, что он ограничен 10 цифрами. Надеюсь, кто-то может исправить меня, если они знают о деталях. Можно использовать это выражение:
vimeo\.com\/([0-9]{1,10})
Код для вставки Vimeo Код принимает форму:
<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]*)"
Имейте в виду, что "
нужно будет экранировать с \
, если вы заключаете выражение в двойные кавычки.
В итоге , я не уверен, как вы хотели реализовать это, но вы можете либо объединить все выражения с |
, либо вы можете сопоставить каждое из них по отдельности. Добавьте комментарий к этому ответу, если хотите, чтобы я предоставил дополнительную информацию о том, как объединить выражения.