Regex für YouTube-Link
-
19-09-2019 - |
Frage
In einem System, das ich entwickle ich brauche den YouTube-Link in folgendem Format erkennen
[youtube] YouTube-URL [/ youtube]
für den Moment, als ich an diesem regulären Ausdruck kam:
#\[youtube\]http://www.youtube\.(.*)/watch\?v=([a-zA-Z0-9_-]*)\[\/youtube\]#s
Aber dieses Muster ist nicht in der Lage URL zu erkennen, wie
[youtube] http://www.youtube.com/ watch? v = s3wXkv1VW54 & feature = FVST [/ youtube]
Beachten Sie die feature = FVST .
Einige kann man mir helfen, in alle möglichen YouTube-URL erkennen?
Lösung
Wie wäre es
|\[youtube\]http://www.youtube\.(.*?)/watch\?v=([a-zA-Z0-9_-]*)[%&=#a-zA-Z0-9_-]*\[\/youtube\]|s
EDIT:. Die Regex Changed nur die Video-ID in Klammern zu halten
Andere Tipps
Weitere Informationen:
Ich würde führe ein Groß- und Kleinschreibung Spiel auf URLs (/ i)
. passt alles; verwenden \. stattdessen die URL
übereinstimmen
Auch „www.“ in Youtube URLs ist optional.
Verwenden Sie (\. [A-z] +) {1,2} statt "*" gefunden ".com", ".net", .. nach "youtube"
Unter der Annahme, der "& feature" Teil optional ist, würde die regex sein:
/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&feature=([a-z]+))?\[\/youtube\]/is
Unter der Annahme, die "& feature" Teil optional ist, und es können auch andere Parameter als "Feature":
/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&([a-z]+)=([a-z0-9_-])+)*?\[\/youtube\]/is