J’essaie de vérifier si une URL est une URL de vidéo youtube valide et d’obtenir l’ID de la vidéo youtube. Jusqu’à présent, j’utilise une simple fonction divisée en javascript pour y parvenir. Toutefois, cette application présente quelques inconvénients mineurs car youtube comporte plusieurs URL .
J’ai consulté d’autres threads stackoverflow, mais ils ne prennent en charge qu’une seule URL spécifique, ce qui n’est pas ce dont j’ai besoin.
J’ai besoin de quelque chose qui correspond à toutes ces URL:
http (s): //www.youtu.be/videoID
- Validation conditionnelle à l’aide du plug-in de validation JQuery
- Utilisation de Javascript uniquement pour réduire les URL à l’aide de l’API Bit.ly
- recadrer l’image en utilisant des coordonnées
- parent caché mais les enfants sont toujours visibles (je ne veux pas qu’ils soient visibles)!
- L’entrée jquery récupère l’ancienne valeur avant onchange et obtient la valeur après modification
http (s): //www.youtube.com/watch? v = videoID
(et éventuellement toute autre URL courte dont le script détecte automatiquement s’il contient une vidéo youtube)
Toutes les idées qui peuvent être traitées par le navigateur rapide / efficace sont grandement appréciées!
Essaye ça:
var url = "..."; var videoid = url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/); if(videoid != null) { console.log("video id = ",videoid[1]); } else { console.log("The youtube url is not valid."); }
voir regex:
/ (?:https?:\/{2})? // Optional protocol, if have, must be http:// or https:// (?:w{3}\.)? // Optional sub-domain, if have, must be www. youtu(?:be)? // The domain. Match 'youtu' and optionally 'be'. \.(?:com|be) // the domain-extension must be .com or .be (?:\/watch\?v=|\/)([^\s&]+) //match the value of 'v' parameter in queryssortingng from 'watch' directory OR after root directory, any non-space value. /
Peut-être devriez-vous consulter l’API Youtube et essayer de voir s’il existe un moyen d’obtenir un ID vidéo en analysant l’URL via l’API.
Regardez ce post SO: Youtube API – Extrait ID vidéo
Cela pourrait être rapide:
var url = 'http://www.youtu.be/543221'; //http://www.youtube.com/watch?v=SNfYz6Yw0W8&feature=g-all-esi would work also var a = url.split("v=")[1]; a = a != undefined ? a : url.split("youtu.be/")[1]; b = a.split("&")[0];
la variable c aura votre identifiant. Rapide. La regex est plus agréable … plus difficile à lire. J’ai modifié mon code pour tenir compte des deux.
Il y a trop de genre:
http://youtu.be/NLqAF9hrVbY
http://www.youtube.com/embed/NLqAF9hrVbY
https://www.youtube.com/embed/NLqAF9hrVbY
http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
http://www.youtube.com/watch?v=NLqAF9hrVbY
http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo
http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I
http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/2/PPS-8DMrAn4
http://gdata.youtube.com/feeds/api/videos/NLqAF9hrVbY
http://www.youtube.com/watch?v=spDj54kf-vY&feature=g-vrec
http://www.youtube.com/watch?v=spDj54kf-vY&feature=youtu.be
(Source: Comment trouver tous les identifiants de vidéos YouTube dans une chaîne à l’aide d’une expression régulière? ) Le meilleur moyen est de limiter les données d’entrée.
Bonne chance
essayez ce code
var url = "..."; var videoid = url.match((?:youtube(?:-nocookie)?\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})); if(videoid != null) { console.log("video id = ",videoid[1]); } else { console.log("The youtube url is not valid."); }
Le regex provient de YouTube video ID regex
vous pouvez le faire facilement en utilisant preg_match, voici l’exemple:
$url = "http://www.youtube.com/watch?v=YzOt12co4nk&feature=g-vrec"; preg_match('/v=([0-9a-zA-Z]+)/', $url, $matches); $vid = $matches[1];
Vous allez maintenant avoir l’identifiant vidéo: $ vid = YzOt12co4nk;