Ich habe ein Textfeld, in das Benutzer alles schreiben können.
Beispielsweise:
Lorem Ipsum ist einfach Dummy-Text. http://www.youtube.com/watch?v=DUQi_R4SgWo der Druck- und Satzindustrie. Lorem Ipsum ist seit dem 16. Jahrhundert der Standard-Dummy-Text der Branche, als ein unbekannter Drucker eine Galeere vom Typ nahm und sie zu einem Musterbuch verschlüsselte. Es hat nicht nur fünf Jahrhunderte überlebt, sondern auch den Sprung in den elektronischen Satz, der im Wesentlichen unverändert geblieben ist. http://www.youtube.com/watch?v=A_6gNZCkajU&feature=relmfu Es wurde in den 1960er Jahren mit der Veröffentlichung von Letraset-Blättern mit Lorem Ipsum-Passagen und in jüngerer Zeit mit Desktop-Publishing-Software wie Aldus PageMaker einschließlich Versionen von Lorem Ipsum populär gemacht.
Jetzt möchte ich es analysieren und alle YouTube-Video-URLs und ihre IDs finden.
Irgendeine Idee, wie das funktioniert?
Antworten:
Eine YouTube-Video-URL kann in verschiedenen Formaten gefunden werden:
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
Hier ist eine PHP-Funktion mit einem kommentierten regulären Ausdruck, der mit jedem dieser URL-Formulare übereinstimmt und sie in Links konvertiert (sofern es sich nicht bereits um Links handelt):
;; // $ YouTubeId beenden.
Und hier ist eine JavaScript-Version mit genau demselben regulären Ausdruck (mit entfernten Kommentaren):
Anmerkungen:
$1
."http://www.youtube.com/watch?v=VIDEO_ID"
URL im generischen Stil und setzt den Linktext auf :"YouTube link: VIDEO_ID"
.Edit 2011-07-05:
-
Bindestrich zur ID- Zeichenklasse hinzugefügtEdit 2011-07-17: Regex behoben , um alle verbleibenden Teile (z. B. Abfragen ) der URL nach der YouTube-ID zu verbrauchen . Modifikator für
'i'
Groß- und Kleinschreibung hinzugefügt . Funktion in camelCase umbenannt. Verbesserter vorverknüpfter Lookahead-Test.Bearbeiten 2011-07-27: Neue Formate "Benutzer" und "ytscreeningroom" von YouTube-URLs hinzugefügt.
Edit 2011-08-02: Vereinfacht / verallgemeinert, um neue YouTube-URLs "any / thing / goes" zu verarbeiten.
Edit 2011-08-25: Mehrere Änderungen:
linkifyYouTubeURLs()
function wurde hinzugefügt .\b
der Wortbegrenzungsanker um die VIDEO_ID verwendet. Dies funktioniert jedoch nicht, wenn die VIDEO_ID mit einem-
Bindestrich beginnt oder endet . Behoben, dass es diese Bedingung behandelt.+
und%
zu Zeichenklasse passenden Query - String.%
in: geändert~
.Bearbeiten 2011-10-12: Der YouTube-URL-Host-Teil kann jetzt eine beliebige Subdomain haben (nicht nur
www.
).Edit 2012-05-01: Der Abschnitt zum Konsumieren von URLs kann jetzt '-' zulassen.
Bearbeiten 23.08.2013: Zusätzliches Format von @Mei hinzugefügt. (Der Abfrageteil kann einen
.
Punkt haben.Bearbeiten 30.11.2013: Zusätzliches Format von @CRONUS hinzugefügt :
youtube-nocookie.com
.Edit 2016-01-25: Regex behoben , um den von CRONUS bereitgestellten Fehlerfall zu behandeln.
quelle
Hier ist eine Methode, die ich einmal für ein Projekt geschrieben habe, das YouTube- und Vimeo-Videotasten extrahiert:
quelle
if(strpos($vid_link, 'youtu'))
erfasst die kurze URLyoutu.be
zusätzlich zu den allgemeinen URLs.Während die Antwort von ridgerunner die Grundlage für meine Antwort ist, löst sich seine NICHT für alle URLs und ich glaube nicht, dass sie dazu in der Lage ist, da mehrere Übereinstimmungen
VIDEO_ID
in einer YouTube-URL möglich sind. Mein regulärer Ausdruck beinhaltet seinen aggressiven Ansatz als letzten Ausweg, versucht jedoch zuerst alle gängigen Übereinstimmungen, wodurch die Möglichkeit einer falschen Übereinstimmung später in der URL erheblich verringert wird.Diese Regex:
Behandelt alle Fälle, auf die ursprünglich in Ridgerunners-Beispielen verwiesen wurde, sowie alle URLs, die möglicherweise später in der URL eine 11-stellige Sequenz haben. dh:
http://www.youtube.com/watch?v=GUEZCxBcM78&feature=pyv&feature=pyv&ad=10059374899&kw=%2Bwingsuit
Hier ist ein Arbeitsbeispiel, das alle YouTube-Beispiel-URLs testet:
http://jsfiddle.net/DJSwc/5/
quelle
Versuchen
Sie finden die Video-IDs in der ersten Erfassungsgruppe. Was ich nicht weiß ist, was eine gültige Video-ID ist? Im Moment überprüfe ich
v=
alles und fange es ein-A-Za-z0-9_
.Ich habe es hier online auf Rubular mit Ihrer Beispielzeichenfolge überprüft .
quelle
Verwenden:
quelle
Okay, ich habe eine eigene Funktion gemacht. Aber ich glaube, es ist ziemlich ineffizient. Verbesserungen sind willkommen:
quelle
Ich habe einen einfachen Ausdruck versucht, um nur die Video-ID zu erhalten:
Überprüfen Sie es online bei phpliveregex .
quelle
Auf dem Originalposter wurde gefragt: "Ich möchte es analysieren und alle YouTube-Video-URLs und ihre IDs finden." Ich habe die oben genannte beliebteste Antwort auf preg_match umgestellt und die Video-ID und die URL zurückgegeben.
Holen Sie sich die YouTube-URL und -ID aus dem Beitrag:
quelle
Finden Sie einfach einen YouTube-Link aus einer Zeichenfolge:
quelle
Dieser Code in Java funktioniert derzeit für alle YouTube-URLs einwandfrei.
quelle