正确的youtube链接

时间:2010-02-08 10:09:07

标签: php regex youtube preg-match

在我正在开发的系统中,我需要以下列格式识别youtube链接

  

[youtube] youtube url [/ youtube]

目前我到达了这个正则表达式:

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

但是这种模式无法像

一样识别网址
  

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

请注意功能= fvst

有人可以帮助我识别所有可能的youtube网址吗?

2 个答案:

答案 0 :(得分:4)

怎么样

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

编辑:更改了正则表达式,只保留括号内的视频ID。

答案 1 :(得分:1)

注意:
我会对URL(/ i)执行不区分大小写的匹配 。匹配任何东西使用 \。而是匹配URL
另外,“www。”在Youtube中,URL是可选的。
使用(\。[a-z] +){1,2}代替“。*”来匹配“.com”,“。co.uk”,...在“youtube”之后
假设“& feature”部分是可选的,正则表达式将是:

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

假设“& feature”部分是可选的,AND可以有除“feature”之外的其他参数:

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