Reg exp для ссылки на YouTube - PullRequest
       26

Reg exp для ссылки на YouTube

6 голосов
/ 08 февраля 2010

В системе, которую я разрабатываю, мне нужно распознать ссылку на YouTube в следующем формате

[youtube] url youtube [/ youtube]

на данный момент я пришел к этому регулярному выражению:

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

Но этот шаблон не может распознавать URL как

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

Обратите внимание на функцию = fvst .

Кто-нибудь может помочь мне распознать все возможные URL-адреса YouTube?

Ответы [ 2 ]

4 голосов
/ 08 февраля 2010

Как насчет

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

РЕДАКТИРОВАТЬ: Изменено регулярное выражение, чтобы сохранить только идентификатор видео в скобках.

1 голос
/ 08 февраля 2010

Примечания:
Я бы выполнил сопоставление без учета регистра для 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" является необязательной, И могут существовать другие параметры, кроме "feature":

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