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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top