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
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).
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 )
var r = /(videos|video|channels|\.com)\/([\d]+)/,
a = "https://vimeo.com/album/2222222/video/11111111";
console.log(a.match(r)[2]); // 11111111;
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+)(?:$|\/|\?)/
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];