Obtenir l'id de la vidéo de l'url Vimeo

j'essaie de trouver le meilleur regexp pour récupérer l'id vidéo vimeo de L'URL.

un Exemple d'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

Ma regexp qui ne fonctionne pas:

/http://(www.)?vimeo.com/(d+)($|/)/

aire de Jeux Et Test ici : http://jsbin.com/asuqic/1/edit?javascript,en direct

25
demandé sur Alexey Malev 2012-11-08 14:06:12

5 réponses

mise à Jour: je remarque que cette réponse reçoit de temps à autre de l'attention (par des votes ou des commentaires). La réponse est de plus de deux ans, et probablement les types D'URL pris en charge ne sont plus à jour. Je ne vais pas maintenir activement cette expression - c'est simplement une réponse à la question, et donc seulement prend en charge les formats répertoriés. À utiliser à vos risques et périls, ou - encore mieux - utiliser simplement comme un point de départ pour développer votre propre regex est basé sur une liste à jour et complète des formats D'URL.

voir la réponse de @l2aelba pour la solution API https://stackoverflow.com/a/37695721/622813


Ce serait la pleine expression régulière, qui s'assure également que le format est correct:

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

Vous pouvez maintenant récupérer le nom du groupe dans la capture d'un groupe 1 (si présent), L'ID de l'album dans le groupe de capture 2 (si présent) et L'ID de la vidéo dans le groupe de capture 3 (toujours).

Démo

35
répondu Martin Ender 2017-05-23 12:02:00

depuis 2016. Et @Martin Ender dit no longer up to date


voici un API solution:(sans regexp mais API caller et safe!)

jQuery:

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;
}

Rapetisser :

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}

Pure / Native JS :(IE9+ & les navigateurs Modernes)

function GetVimeoIDbyUrl(url) {
  var id = false;
  var request = new XMLHttpRequest();
  request.open('GET', 'https://vimeo.com/api/oembed.json?url='+url , false);
  request.onload = function() {
    if (request.status >= 200 && request.status < 400) {
      var response = JSON.parse(request.responseText);
      if(response.video_id) {
        id = response.video_id;
      }
    }
  };
  request.send();
  return id;
}

Rapetisser :

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}

Démo : https://jsbin.com/mevejoxudo/1/edit?js,sortie

un type d'url ne supporte pas ? :https://vimeo.com/help/contact#tech-api( leur Dire, ne pas me dire hehe :D )

9
répondu l2aelba 2017-07-05 07:15:42
var r = /(videos|video|channels|\.com)\/([\d]+)/,
    a = "https://vimeo.com/album/2222222/video/11111111";

console.log(a.match(r)[2]); // 11111111;

http://jsbin.com/asuqic/7/edit

3
répondu andlrc 2012-11-08 10:09:40

le regex suivant retournera l'id du Groupe 1 pour ceux qui veulent seulement récupérer cette information. Il fonctionne avec toutes les URLs d'Exemple données dans la question. Il fonctionne également sans http:// et https://. Il fonctionne aussi avec des URLs comme player.vimeo.com/...

/^.*(?:vimeo.com)\/(?:channels\/|groups\/[^\/]*\/videos\/|album\/\d+\/video\/|video\/|)(\d+)(?:$|\/|\?)/
3
répondu morgul 2014-02-27 16:34:17

pour php, le code ci-dessous fonctionne pour les urls suivantes

i.e.:

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

Code PHP :

    $vimeoUrl = 'http://vimeo.com/channels/channelsName/11111111';
    $fetchVimeoIdArr = explode('/', $vimeoUrl);
    $idCounter = count($fetchVimeoIdArr) - 1;
    $vimeoId = $fetchVimeoIdArr[$idCounter];
0
répondu Niko Jojo 2016-03-11 07:25:36