Простой способ получить идентификатор Vimeo с URL-адреса vimeo
Я пытаюсь получить только идентификатор с URL-адреса vimeo. Есть ли более простой способ, чем этот? Все URL-адреса видео vimeo, которые я вижу, всегда следующие:
// VIMEO
$vimeo = $_POST['vimeo'];
function getVimeoInfo($vimeo)
{
$url = parse_url($vimeo);
if($url['host'] !== 'vimeo.com' &&
$url['host'] !== 'www.vimeo.com')
return false;
if (preg_match('~^http://(?:www\.)?vimeo\.com/(?:clip:)?(\d+)~', $vimeo, $match))
{
$id = $match[1];
}
else
{
$id = substr($link,10,strlen($link));
}
if (!function_exists('curl_init')) die('CURL is not installed!');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://vimeo.com/api/v2/video/$id.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = unserialize(curl_exec($ch));
$output = $output[0];
curl_close($ch);
return $output['id'];
}
$vimeo_id = getVimeoInfo($vimeo);
7 answers
Я думаю, используя parse_url()
это лучший вариант:
$vimeo = 'https://vimeo.com/29474908';
echo (int) substr(parse_url($vimeo, PHP_URL_PATH), 1);
Существует множество допустимых URL-адресов vimeo. Несколько примеров
Все допустимые URL-адреса:
http://vimeo.com/6701902
http://vimeo.com/670190233
http://player.vimeo.com/video/67019023
http://player.vimeo.com/video/6701902
http://player.vimeo.com/video/67019022?title=0&byline=0&portrait=0
http://player.vimeo.com/video/6719022?title=0&byline=0&portrait=0
http://vimeo.com/channels/vimeogirls/6701902
http://vimeo.com/channels/vimeogirls/67019023
http://vimeo.com/channels/staffpicks/67019026
http://vimeo.com/15414122
http://vimeo.com/channels/vimeogirls/66882931
Все недопустимые URL-адреса:
http://vimeo.com/videoschool
http://vimeo.com/videoschool/archive/behind_the_scenes
http://vimeo.com/forums/screening_room
http://vimeo.com/forums/screening_room/topic:42708
Я написал это регулярное выражение java, которое улавливает все указанные выше допустимые URL-адреса и отклоняет недопустимые. Я не уверен, однако, есть ли у них в vimeo более допустимые URL-адреса.
(https?://)?(www.)?(player.)?vimeo.com/([a-z]*/)*([0-9]{6,11})[?]?.*
Надеюсь, это поможет...
Для тех из вас, кто хочет увидеть код, полностью реализованный с использованием PHP, я использую регулярное выражение, предоставленное пользователем 2200660 и отформатированное для PHP Морганом Делани, вот оно:
$vimeo = 'http://player.vimeo.com/video/67019023';
if(preg_match("/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/", $vimeo, $output_array)) {
echo "Vimeo ID: $output_array[5]";
}
//outputs: Vimeo ID: 67019023
[ Редактировать] Теперь вы можете сделать все это с помощью API!
Если вы предоставите разделенный запятыми список ваших URL-адресов Vimeo с помощью параметра "ссылки" на конечную точку поиска (https://developer.vimeo.com/api/endpoints/videos#GET/videos ) мы вернем эти видео в качестве ответов API.
Например,
GET https://api.vimeo.com/videos?links=https://vimeo.com/74648232,https://vimeo.com/232323497
[ Оригинал]
Vimeo предоставляет множество различных типов URL-адресов видео, некоторые из которых не содержат идентификатора. Для обеспечения поддержки во всех подразделениях Vimeo URL-адреса вы должны напрямую запросить идентификатор у vimeo.
Вы можете спросить vimeo через конечную точку oEmbed.
Существует множество вариантов, но самый простой вариант - отправить HTTP-запрос GET по URL-адресу https://vimeo.com/api/oembed.json?url={vimeo_url}
, заменив {vimeo_url}
соответствующим URL-адресом.
Например, чтобы получить идентификатор URL-адреса, который вы указали выше (https://vimeo.com/29474908 ) сделайте запрос HTTP GET к
Https://vimeo.com/api/oembed.json?url=https://vimeo.com/29474908
Проанализируйте ответ JSON и возьмите параметр video_id
.
Это должно получить идентификатор из всех видов URL-адресов vimeo.
$url = 'https://vimeo.com/cool/29474908?title=0&byline=0&portrait=0';
$urlParts = explode("/", parse_url($url, PHP_URL_PATH));
$videoId = (int)$urlParts[count($urlParts)-1];
Если кому-то это нужно в JavaScript на основе @user2200660, ответьте:
function getVimeoVideoId(url){
var regex = new RegExp(/(https?:\/\/)?(www.)?(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/);
if ( regex.test(url) ) {
return regex.exec(url)[5];
}
}
Текущее рабочее регулярное выражение:
function getIdFromVimeoURL(url) {
return /(vimeo(pro)?\.com)\/(?:[^\d]+)?(\d+)\??(.*)?$/.exec(url)[3];
}
console.log(getIdFromVimeoURL("https://vimeo.com/channels/staffpicks/272053388"))
console.log(getIdFromVimeoURL("https://vimeo.com/272053388"))
console.log(getIdFromVimeoURL("https://player.vimeo.com/video/272053388"))
// ...etc.