J'essaye d'obtenir juste l'ID d'une URL vimeo. Existe-t-il un moyen plus simple que cela? Toutes les URL vidéo vimeo que je vois sont toujours:
// 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);
Je pense que l'utilisation de parse_url()
est la meilleure option:
$vimeo = 'https://vimeo.com/29474908';
echo (int) substr(parse_url($vimeo, PHP_URL_PATH), 1);
Il existe de nombreuses URL vimeo qui sont valides. Peu d'exemples sont
Toutes les URL valides:
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
Toutes les URL non valides:
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
J'ai écrit ceci Java regex qui attrape toutes les URL valides ci-dessus et rejette les non valides. Je ne sais pas si elles vimeo a plus d'URL valides.
(https?://)?(www.)?(player.)?vimeo.com/([a-z]*/)*([0-9]{6,11})[?]?.*
J'espère que cela t'aides...
Pour ceux d'entre vous qui veulent voir le code entièrement implémenté en PHP, j'utilise l'expression régulière fournie par user2200660 et formatée pour PHP par Morgan Delaney, la voici:
$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
[Modifier] Vous pouvez maintenant tout faire via l'API!
Si vous fournissez une liste séparée par des virgules de vos URL Vimeo via le paramètre "links" au point de terminaison de la recherche ( https://developer.vimeo.com/api/endpoints/videos#GET/videos ) nous renverra ces vidéos sous forme de réponses API.
par exemple.
GET https://api.vimeo.com/videos?links=https://vimeo.com/74648232,https://vimeo.com/232323497
[Original]
Vimeo fournit de nombreux types d'URL vidéo, dont certains n'incluent pas l'ID. Pour garantir la prise en charge de toutes les URL de Vimeo, vous devez demander directement à vimeo l'ID.
Vous pouvez demander à vimeo via oEmbed endpoint .
Il existe de nombreuses options, mais l'option la plus simple consiste à faire une requête HTTP GET à l'url https://vimeo.com/api/oembed.json?url={vimeo_url}
, en remplaçant {vimeo_url}
avec l'URL appropriée.
Par exemple, pour obtenir l'ID de l'URL que vous avez fournie ci-dessus ( https://vimeo.com/29474908 ), effectuez une demande HTTP GET pour
https://vimeo.com/api/oembed.json?url=https://vimeo.com/29474908
Analysez la réponse JSON et récupérez le video_id
paramètre.
Cela devrait récupérer l'ID de toutes sortes d'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];
Une expression rationnelle actuelle et fonctionnelle:
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.
Si quelqu'un en a besoin en JavaScript basé sur @ user2200660, répondez:
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];
}
}
Si vous n'avez besoin que de l'ID Vimeo, vous pouvez utiliser les groupes non capturants RegExp:
(?:https?:\/\/)?(?:www\.)?vimeo\.com\/(?:(?:[a-z0-9]*\/)*\/?)?([0-9]+)