Regex pre youtube odkaz - php, regex, youtube, preg_match

V systéme, ktorý sa rozvíjam, potrebujem rozpoznať odkaz YouTube v nasledujúcom formáte

[youtube] youtube url [/ youtube]

momentálne som dospel k tomuto regulárnemu výrazu:

#[youtube]http://www.youtube.(.*)/watch?v=([a-zA-Z0-9_-]*)[/youtube]#s

Tento model však nie je schopný rozpoznať adresu URL

[Youtube]http://www.youtube.com/watch?v=s3wXkv1VW54&feature=fvst[/youtube]

Poznámka: feature = fvst,

Niektorý mi môže pomôcť pri rozpoznávaní všetkých možných URL youtube?

odpovede:

4 pre odpoveď č. 1

Čo tak

|[youtube]http://www.youtube.(.*?)/watch?v=([a-zA-Z0-9_-]*)[%&=#a-zA-Z0-9_-]*[/youtube]|s

EDIT: zmenilo sa regex, aby sa v zátvorkách zachovalo iba ID videa.


1 pre odpoveď č. 2

Poznámky:
Pri adresách URL by som mal odpovedať na malé a veľké písmená (/ i)
, zodpovedá čokoľvek; používať. namiesto toho, aby sa zhodovala s adresou URL
Tiež "www." v URL Youtube je voliteľné.
Použite (. [A-z] +) {1,2} namiesto ". *" Tak, aby zodpovedali ".com", ".co.uk", .. po "youtube"

Za predpokladu, že časť "& funkcia" je voliteľná, regex by bol:

/[youtube]http://(www.)?youtube(.[a-z]+){1,2}/watch?v=([a-z0-9_-]*)(&feature=([a-z]+))?[/youtube]/is

Za predpokladu, že časť "& funkcia" je voliteľná, A môžu existovať ďalšie parametre ako "funkcia":

/[youtube]http://(www.)?youtube(.[a-z]+){1,2}/watch?v=([a-z0-9_-]*)(&([a-z]+)=([a-z0-9_-])+)*?[/youtube]/is

Ponuka