RegEx per il link youtube
-
19-09-2019 - |
Domanda
In un sistema che sto sviluppando ho bisogno di riconoscere il link di YouTube nel seguente formato
[youtube] youtube url [/ youtube]
Per il momento sono arrivato a questa espressione regolare:
#\[youtube\]http://www.youtube\.(.*)/watch\?v=([a-zA-Z0-9_-]*)\[\/youtube\]#s
Ma questo modello non è in grado di riconoscere come url
[youtube] http://www.youtube.com/ watch? v = s3wXkv1VW54 & feature = fvst [/ youtube]
Si noti la feature = fvst .
Qualcuno può aiutarmi a riconoscere tutti i possibili URL di YouTube?
Soluzione
Come su
|\[youtube\]http://www.youtube\.(.*?)/watch\?v=([a-zA-Z0-9_-]*)[%&=#a-zA-Z0-9_-]*\[\/youtube\]|s
EDIT:. Cambiato l'espressione regolare per mantenere solo l'ID del Video all'interno parentesi
Altri suggerimenti
Note:
Mi piacerebbe eseguire una corrispondenza case-insensitive su URL (/ i)
. corrisponde a qualsiasi cosa; uso \. invece corrispondere all'URL
Inoltre, "www." negli URL di Youtube è facoltativo.
Utilizzare (\. [A-z] +) {1,2} invece di "*" per corrispondenza ".com", ".it", .. dopo
"youtube"
Assumendo la parte "e funzione" è opzionale, la regex sarebbe:
/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&feature=([a-z]+))?\[\/youtube\]/is
Supponendo che la parte "e funzione" è opzionale, e ci possono essere altri parametri di "feature":
/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&([a-z]+)=([a-z0-9_-])+)*?\[\/youtube\]/is