Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Vimeo url获取视频id_Javascript_Regex_Vimeo - Fatal编程技术网

Javascript 从Vimeo url获取视频id

Javascript 从Vimeo url获取视频id,javascript,regex,vimeo,Javascript,Regex,Vimeo,我正在试图找到从URL获取vimeo视频id的最佳regexp 示例URL: https://vimeo.com/11111111 http://vimeo.com/11111111 https://www.vimeo.com/11111111 http://www.vimeo.com/11111111 https://vimeo.com/channels/11111111 http://vimeo.com/channels/11111111 https://vimeo.com/groups/n

我正在试图找到从URL获取vimeo视频id的最佳regexp

示例URL:

https://vimeo.com/11111111
http://vimeo.com/11111111
https://www.vimeo.com/11111111
http://www.vimeo.com/11111111
https://vimeo.com/channels/11111111
http://vimeo.com/channels/11111111
https://vimeo.com/groups/name/videos/11111111
http://vimeo.com/groups/name/videos/11111111
https://vimeo.com/album/2222222/video/11111111
http://vimeo.com/album/2222222/video/11111111
https://vimeo.com/11111111?param=test
http://vimeo.com/11111111?param=test
function GetVimeoIDbyUrl(url) {
  var id = false;
  $.ajax({
    url: 'https://vimeo.com/api/oembed.json?url='+url,
    async: false,
    success: function(response) {
      if(response.video_id) {
        id = response.video_id;
      }
    }
  });
  return id;
}
function GetVimeoIDbyUrl(e){var i=!1;return $.ajax({url:"https://vimeo.com/api/oembed.json?url="+e,async:!1,success:function(e){e.video_id&&(i=e.video_id)}}),i}
function GetVimeoIDbyUrl(e){var t=!1,o=new XMLHttpRequest;return o.open("GET","https://vimeo.com/api/oembed.json?url="+e,!1),o.onload=function(){if(o.status>=200&&o.status<400){var e=JSON.parse(o.responseText);e.video_id&&(t=e.video_id)}},o.send(),t}
我当前的regexp不起作用:

/http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/
这里的操场和测试:


更新:我注意到这个答案不时地(通过投票或评论)引起一些注意答案已经存在两年多了,而且支持的URL类型可能不再是最新的。我不会积极维护这个正则表达式-它只是为了回答这个问题,因此只考虑这里列出的格式。使用它的风险由您自己承担,或者——甚至更好——仅将其作为基于最新和全面的URL格式列表开发您自己的正则表达式的起点

有关API解决方案,请参见@l2aelba的答案


这将是完整的正则表达式,它还确保格式正确:

/https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/
现在,您可以在捕获组
1
(如果存在)中检索组名,在捕获组
2
(如果存在)中检索相册ID,在捕获组
3
(始终)中检索视频ID


以下正则表达式将为那些只想检索此信息的人返回组1上的id。它适用于问题中给出的所有示例URL。 它也可以在没有http://和https://的情况下工作。 它也适用于类似于
player.vimeo.com/…

/^.*(?:vimeo.com)\\/(?:channels\\/|groups\\/[^\\/]*\\/videos\\/|album\\/\\d+\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/

对于php,以下代码适用于以下URL

i、 e:

http://vimeo.com/88888888
http://player.vimeo.com/video/88888888
http://vimeo.com/channels/staffpicks/88888888
http://vimeo.com/groups/groupsname/88888888
PHP代码:

    $vimeoUrl = 'http://vimeo.com/channels/channelsName/11111111';
    $fetchVimeoIdArr = explode('/', $vimeoUrl);
    $idCounter = count($fetchVimeoIdArr) - 1;
    $vimeoId = $fetchVimeoIdArr[$idCounter];

自2016年以来。而且@Martin Ender
不再是最新的


因此,这里有一个API解决方案:(不带regexp,但带API调用者和safe!)

jQuery:

https://vimeo.com/11111111
http://vimeo.com/11111111
https://www.vimeo.com/11111111
http://www.vimeo.com/11111111
https://vimeo.com/channels/11111111
http://vimeo.com/channels/11111111
https://vimeo.com/groups/name/videos/11111111
http://vimeo.com/groups/name/videos/11111111
https://vimeo.com/album/2222222/video/11111111
http://vimeo.com/album/2222222/video/11111111
https://vimeo.com/11111111?param=test
http://vimeo.com/11111111?param=test
function GetVimeoIDbyUrl(url) {
  var id = false;
  $.ajax({
    url: 'https://vimeo.com/api/oembed.json?url='+url,
    async: false,
    success: function(response) {
      if(response.video_id) {
        id = response.video_id;
      }
    }
  });
  return id;
}
function GetVimeoIDbyUrl(e){var i=!1;return $.ajax({url:"https://vimeo.com/api/oembed.json?url="+e,async:!1,success:function(e){e.video_id&&(i=e.video_id)}}),i}
function GetVimeoIDbyUrl(e){var t=!1,o=new XMLHttpRequest;return o.open("GET","https://vimeo.com/api/oembed.json?url="+e,!1),o.onload=function(){if(o.status>=200&&o.status<400){var e=JSON.parse(o.responseText);e.video_id&&(t=e.video_id)}},o.send(),t}
缩小:

https://vimeo.com/11111111
http://vimeo.com/11111111
https://www.vimeo.com/11111111
http://www.vimeo.com/11111111
https://vimeo.com/channels/11111111
http://vimeo.com/channels/11111111
https://vimeo.com/groups/name/videos/11111111
http://vimeo.com/groups/name/videos/11111111
https://vimeo.com/album/2222222/video/11111111
http://vimeo.com/album/2222222/video/11111111
https://vimeo.com/11111111?param=test
http://vimeo.com/11111111?param=test
function GetVimeoIDbyUrl(url) {
  var id = false;
  $.ajax({
    url: 'https://vimeo.com/api/oembed.json?url='+url,
    async: false,
    success: function(response) {
      if(response.video_id) {
        id = response.video_id;
      }
    }
  });
  return id;
}
function GetVimeoIDbyUrl(e){var i=!1;return $.ajax({url:"https://vimeo.com/api/oembed.json?url="+e,async:!1,success:function(e){e.video_id&&(i=e.video_id)}}),i}
function GetVimeoIDbyUrl(e){var t=!1,o=new XMLHttpRequest;return o.open("GET","https://vimeo.com/api/oembed.json?url="+e,!1),o.onload=function(){if(o.status>=200&&o.status<400){var e=JSON.parse(o.responseText);e.video_id&&(t=e.video_id)}},o.send(),t}

纯/原生JS:(IE9+和现代浏览器)

函数GetVimeoIDbyUrl(url){ var-id=false; var request=new XMLHttpRequest(); request.open('GET','https://vimeo.com/api/oembed.json?url=“+url,错误); request.onload=函数(){ 如果(request.status>=200&&request.status<400){ var response=JSON.parse(request.responseText); if(响应.视频\u id){ id=response.video\u id; } } }; request.send(); 返回id; } 缩小:

https://vimeo.com/11111111
http://vimeo.com/11111111
https://www.vimeo.com/11111111
http://www.vimeo.com/11111111
https://vimeo.com/channels/11111111
http://vimeo.com/channels/11111111
https://vimeo.com/groups/name/videos/11111111
http://vimeo.com/groups/name/videos/11111111
https://vimeo.com/album/2222222/video/11111111
http://vimeo.com/album/2222222/video/11111111
https://vimeo.com/11111111?param=test
http://vimeo.com/11111111?param=test
function GetVimeoIDbyUrl(url) {
  var id = false;
  $.ajax({
    url: 'https://vimeo.com/api/oembed.json?url='+url,
    async: false,
    success: function(response) {
      if(response.video_id) {
        id = response.video_id;
      }
    }
  });
  return id;
}
function GetVimeoIDbyUrl(e){var i=!1;return $.ajax({url:"https://vimeo.com/api/oembed.json?url="+e,async:!1,success:function(e){e.video_id&&(i=e.video_id)}}),i}
function GetVimeoIDbyUrl(e){var t=!1,o=new XMLHttpRequest;return o.open("GET","https://vimeo.com/api/oembed.json?url="+e,!1),o.onload=function(){if(o.status>=200&&o.status<400){var e=JSON.parse(o.responseText);e.video_id&&(t=e.video_id)}},o.send(),t}

函数GetVimeoIDbyUrl(e){var t=!1,o=newXMLHttpRequest;返回o.open(“GET”https://vimeo.com/api/oembed.json?url=“+e,!1),o.onload=function(){if(o.status>=200&&o.statussome error?
第1行:vimeo\u Reg=/https?:\/\/(?:www\)?vimeo.com\/(?:channels\/\\/[^\/]*/videos\/\/\\\/\\\\/\\\\\\/\\)(\d+)($\\\\/\\?)/--Unescaped“?”。
@l2aelba抱歉,复制粘贴错误。将我答案中的代码复制到演示中。你能编辑你的演示链接到
jsbin.com/asuqic/11/edit吗?javascript,live
?我想你的答案会被接受:D@l2aelba然后我猜我的答案中又出现了错误的链接:D…不管怎样,现在一切都解决了;)@Aurelin您可以使用
url.split('/').slice(-1)[0].split('?')[0]
,或者正则表达式是必需的吗?以下是未替换版本+添加的对以下内容的支持:
/.*(:vimeo.com)\/(?:channels\/\w+\/\124; channels\/\w+\/\124; groups\/[^\/\d+/video\/\124d+/video\/\124; video\/\d+)(\d+:$:$)/\12411将返回测试参数