Regex-zu-match-Youtube URL ' s

Ich versuche zu validieren, eine Youtube URL mit Hilfe von regex:

preg_match('~http://youtube.com/watch\?v=[a-zA-Z0-9-]+~', $videoLink)

Es funktioniert, aber es können match-URL ist fehlerhaft. Zum Beispiel, wird dieses match ok:

http://www.youtube.com/watch?v=Zu4WXiPRek

Aber so wird auch diese:

http://www.youtube.com/watch?v=Zu4WX£&P!ek

Und dies nicht:

http://www.youtube.com/watch?v=!Zu4WX£&P4ek

Ich denke, es ist, weil der + Betreiber. Es ist passender, was scheint zu sein, das erste Zeichen nach v=, wenn es braucht, um zu versuchen und passen Sie alles hinter sich v= mit [a-zA-Z0-9-]. Jede Hilfe ist willkommen, danke.

  • Was du hast sieht gut aus. Sind £, & ! gültige Zeichen in der YouTube-string? Wenn ja, fügen Sie Sie zu Ihren [a-zA-Z0-9-] char Klasse, ansonsten funktioniert das nicht wie gedacht?
  • Die + btw, bedeutet: mit diesen Zeichen: [a-zA-Z0-9-] ein-oder mehrmals, so wird es halten, bis es trifft so etwas nicht drin.
  • Die einzigen zulässigen Zeichen in einem Youtube-video-ID wie dieser ist a-z, a-Z, 0-9 und -. Daher der Grund, warum ich [a-zA-Z0-9-]. Funktioniert es nicht wie gedacht. Ich kann URLs wie: v=Zu4WX£&P!ek (in diesem Fall £, & und ! sind illegale Zeichen) und es passt Ihnen gut, denn es ist nur die überprüfung der ersten Zeichen nach v=.
  • würde es helfen, wenn man mehr Kontext. Wo sind Sie immer die url aus? Ist es von einer vollständigen Seite kratzen und die urls in href="..."? Sie könnte wie [a-zA-Z0-9-]+("|') haben Sie schon die Liste der urls analysiert und Durchlaufen Sie?
  • Die URL gesendet wird, wird durch ein Formular durch den Benutzer, und ich brauche, um zu überprüfen, dass eine gültige Youtube-URL, bevor ich senden Sie Anfragen an die Seite.
InformationsquelleAutor Will | 2010-09-17
Schreibe einen Kommentar