J'ai un champ de texte où les utilisateurs peuvent écrire n'importe quoi.
Par exemple:
Lorem Ipsum est simplement un texte factice. http://www.youtube.com/watch?v=DUQi_R4SgWo de l'industrie de l'impression et de la composition. Lorem Ipsum est le texte factice standard de l'industrie depuis les années 1500, quand un imprimeur inconnu a pris une galère de caractères et l'a brouillée pour en faire un livre de spécimens. Il a survécu non seulement cinq siècles, mais aussi le saut dans la composition électronique, demeurant essentiellement inchangé. http://www.youtube.com/watch?v=A_6gNZCkajU&feature=relmfu Il a été popularisé dans les années 1960 avec la sortie de feuilles Letraset contenant des passages du Lorem Ipsum, et plus récemment avec un logiciel de publication assistée par ordinateur comme Aldus PageMaker comprenant des versions de Lorem Ipsum.
Maintenant, je voudrais l'analyser et trouver toutes les URL de vidéo YouTube et leurs identifiants.
Une idée de comment cela fonctionne?
Réponses:
Une URL de vidéo YouTube peut être rencontrée dans divers formats:
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
http://www.youtube-nocookie.com
Voici une fonction PHP avec une expression régulière commentée qui correspond à chacune de ces formes d'URL et les convertit en liens (si ce ne sont pas déjà des liens):
; // Fin de $ YouTubeId.
Et voici une version JavaScript avec exactement le même regex (avec les commentaires supprimés):
Remarques:
$1
."http://www.youtube.com/watch?v=VIDEO_ID"
URL de style et définit le texte de lien vers:"YouTube link: VIDEO_ID"
.Edit 2011-07-05: Ajout d'un
-
trait d'union à la classe de caractères IDEdit 2011-07-17: Correction de l'expression régulière pour consommer toute partie restante (par exemple, requête ) de l'URL suivant l'ID YouTube. Ajout du modificateur Ignorer la
'i'
casse . Fonction renommée camelCase. Test d'anticipation pré-lié amélioré.Edit 2011-07-27: Ajout de nouveaux formats "utilisateur" et "ytscreeningroom" pour les URL YouTube.
Edit 02/08/2011: simplifié / généralisé pour gérer les nouvelles URL YouTube "tout / chose / va".
Edit 2011-08-25: Plusieurs modifications:
linkifyYouTubeURLs()
function.\b
ancre de limite de mot autour du VIDEO_ID. Cependant, cela ne fonctionnera pas si le VIDEO_ID commence ou se termine par un-
tiret. Corrigé pour qu'il gère cette condition.+
et%
à la chaîne de requête correspondant à la classe de caractères.%
à:~
.Edit 2011-10-12: la partie hôte d'URL YouTube peut désormais avoir n'importe quel sous-domaine (pas seulement
www.
).Edit 2012-05-01: La section URL de consommation peut désormais autoriser «-».
Edit 2013-08-23: Ajout d'un format supplémentaire fourni par @Mei. (La partie requête peut avoir un
.
point.Modifier 30/11/2013: Ajout Format supplémentaire fourni par @CRONUS:
youtube-nocookie.com
.Edit 2016-01-25: Correction de l'expression régulière pour gérer les cas d'erreur fournis par CRONUS.
la source
Voici une méthode que j'ai écrite une fois pour un projet qui extrait les clés vidéo YouTube et Vimeo:
la source
if(strpos($vid_link, 'youtu'))
capturera l'url courteyoutu.be
en plus des URL communes.Bien que la réponse de ridgerunner soit la base de ma réponse, elle ne résout PAS toutes les URL et je ne pense pas qu'elle en soit capable, en raison de plusieurs correspondances possibles
VIDEO_ID
dans une URL YouTube. Mon regex inclut son approche agressive en dernier recours, mais tente d'abord toutes les correspondances courantes, réduisant considérablement la possibilité d'une mauvaise correspondance plus tard dans l'URL.Cette expression régulière:
Gère tous les cas référencés à l'origine dans les exemples de ridgerunners, ainsi que toute URL qui pourrait avoir une séquence de 11 caractères plus tard dans l'URL. c'est à dire:
http://www.youtube.com/watch?v=GUEZCxBcM78&feature=pyv&feature=pyv&ad=10059374899&kw=%2Bwingsuit
Voici un exemple de travail qui teste tous les exemples d'URL YouTube:
http://jsfiddle.net/DJSwc/5/
la source
Essayer
Vous trouverez les ID vidéo dans le premier groupe de capture. Ce que je ne sais pas, c'est ce qu'est un ID vidéo valide? Pour le moment, je vérifie
v=
et capture tout-A-Za-z0-9_
.Je l'ai vérifié en ligne ici sur rubular avec votre exemple de chaîne.
la source
Utilisation:
la source
D'accord, j'ai fait ma propre fonction. Mais je pense que c'est assez inefficace. Toute amélioration est la bienvenue:
la source
J'ai essayé une expression simple pour obtenir uniquement le videoid:
Vérifiez qu'il fonctionne en ligne ici à phpliveregex .
la source
L'affiche originale demandait "Je voudrais l'analyser et trouver toutes les URL de vidéos YouTube et leurs identifiants." J'ai remplacé la réponse la plus populaire ci-dessus par preg_match et renvoyé l'identifiant et l'URL de la vidéo.
Obtenez l'URL et l'identifiant YouTube de la publication:
la source
Trouvez facilement un lien YouTube à partir d'une chaîne:
la source
Ce code en java fonctionne parfaitement pour toutes les URL YouTube actuellement.
la source