Как получить идентификатор видео из Vimeo URL / вставки?

Поэтому я пытаюсь получить идентификатор видео из URL Vimeo с помощью регулярных выражений.

Основываясь на этом: Получить идентификатор видео с URL Vimeo

Следующее регулярное выражение должно сделать трюк:

if (preg_match("/https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)/", $videoLink, $id)) {
$videoId = $id[3];
}

Но это не работает, и я не могу понять, почему.

Есть ли разница между регулярным выражением в Javascript и PHP / я неправильно использую preg_match? Я какое-то время оглядывался на Stack Overflow и просто не могу найти работающее регулярное выражение для получения идентификатора видео из vimeo url / embed.

Для этого есть множество регулярных выражений, но никто не показывает их реализацию.

1

Решение

Ваш код не содержит ошибок. Вы проверили входные и выходные переменные $videoLink а также $id с print_r($videoLink) а также print_r($id)? Может быть, это дает вам совет.

Вот рабочий пример использования вашего кода:

$videoLink = 'https://vimeo.com/channels/mychannel/11111111';

if (preg_match("/https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)/", $videoLink, $id)) {
$videoId = $id[3];
}

print_r($id); // the array
print_r($videoId); // 11111111

Если print_r() не помогает: вы получаете какие-либо ошибки, если их показ активирован?

Редактировать:

Если вы хотите, чтобы http (s): // был необязательным, вы можете использовать следующий код:

if (preg_match("/(?:https?:\/\/)?(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)/", $videoLink, $id)) {
$videoId = $id[3];
}

Заворачивая это с (...)? делает это необязательным и ?: исключает это из результата.

4

Другие решения

Единственный ответ, который всегда будет правильным, — спросить Vimeo. Vimeo-х oEmbed Конечная точка поддерживает каждый URL Vimeo и возвращает идентификатор видео.

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

Кроме того, они не могут собрать все URL-адреса. Например, Vimeo позволяет использовать собственный URL-адрес видео, который не будет содержать идентификатор. Шаблон (в настоящее время) выглядит следующим образом:

https://vimeo.com/{user_url}/{video_url}

3

Попробуйте это, если вы используете короткие URL-адреса из Vimeo:

$videoLink = 'http://vimeo.com/11111111'; // example

if (preg_match('#https?://vimeo.com/([0-9]+)#i', $videoLink, $match)) {
$videoId = $match[1];
}
1
По вопросам рекламы [email protected]