2010-05-26 21 views
13

Comment analyser un identifiant d'une URL Vimeo en JavaScript?Analyser un identifiant Vimeo en utilisant JavaScript?

L'URL sera saisie par un utilisateur, je devrai donc vérifier qu'ils l'ont entré dans le bon format.

J'ai besoin de l'ID pour pouvoir utiliser leur API simple pour récupérer des données vidéo.

Répondre

18

Comme URL pour les vidéos Vimeo sont faites par http://vimeo.com/ suivi de l'identifiant numérique, vous pouvez effectuer les opérations suivantes

var url = "http://www.vimeo.com/7058755"; 
var regExp = /http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/; 

var match = url.match(regExp); 

if (match){ 
    alert("id: " + match[2]); 
} 
else{ 
    alert("not a vimeo url"); 
} 
+0

et qu'en est-il de "www."? – myfreeweb

+0

www est maintenant autorisé aussi –

+0

Merci cela fonctionne bien pour ce que je veux faire. – Tom

2

Bien sûr.

Vous devez d'abord vérifier la validité/l'intégrité de l'URL avec une regex et assurez-vous qu'elle correspond au modèle que vous attendez. (Plus sur regex'es here)

Ensuite, vous avez besoin de ce numéro d'identification, non? En supposant qu'il se trouve dans l'URL, vous pouvez l'extraire en utilisant également une regex (backreference)

Tout simplement la gestion des chaînes et regex.

+0

Je dois lire dans regex, merci pour les liens. – Tom

6

Si vous voulez vérifier l'URL Vimeo premier:

function getVimeoId(url) { 

    // Look for a string with 'vimeo', then whatever, then a 
    // forward slash and a group of digits. 
    var match = /vimeo.*\/(\d+)/i.exec(url); 

    // If the match isn't null (i.e. it matched) 
    if (match) { 
    // The grouped/matched digits from the regex 
    return match[1]; 
    } 
} 

Par ex

getVimeoId('http://vimeo.com/11918221'); 

retours

11918221 
2
var Vimeo = 
{ 
    get_video_id: function(url) 
    { 
     var regExp = /http(s)?:\/\/(www\.)?vimeo.com\/(\d+)(\/)?(#.*)?/ 

     var match = url.match(regExp) 

     if (match) 
      return match[3] 
    }, 

    get_video_url: function(id) 
    { 
     return 'https://vimeo.com/' + id 
    } 
} 
14
regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/ 
parseUrl = regExp.exec url 
return parseUrl[5] 

Cette fonctionne pour toutes les URL Vimeo valides qui f ollows ces motifs:

http://vimeo.com/*

http://vimeo.com/channels/*/*

http://vimeo.com/groups/*/videos/*

1
function getVimeoId(url) { 
    var m = url.match(/^.+vimeo.com\/(.*\/)?([^#\?]*)/); 
    return m ? m[2] || m[1] : null; 
} 

console.log(getVimeoId("http://vimeo.com/54178821")); 
console.log(getVimeoId("http://vimeo.com/channels/nudiecutie/57383513")); 
1

Je pense que Mathilde est la meilleure réponse, mais il est un projet de code non-travail, fusionnant ainsi avec la réponse de Sean Kinsey nous obtenons cette version de code de travail:

var url = "http://www.vimeo.com/7058755"; //Or any other Vimeo url format 
var regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/; 

var match = url.match(regExp); 

if (match){ 
    alert("id: " + match[5]); 
}else{ 
    alert("not a vimeo url"); 
}