В системе, которую я разрабатываю, я должен распознать ссылку 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]
Отметьте feature=fvst.
Кто-то может помочь мне в, распознают весь возможный URL YouTube?
Как насчет
|\[youtube\]http://www.youtube\.(.*?)/watch\?v=([a-zA-Z0-9_-]*)[%&=#a-zA-Z0-9_-]*\[\/youtube\]|s
РЕДАКТИРОВАТЬ: изменено регулярное выражение, чтобы внутри скобок оставался только идентификатор видео.
Примечания:
Я бы выполнял сопоставление URL без учета регистра (/ i)
{{1} }. соответствует чему угодно; использовать \. вместо этого для соответствия URL
Также "www." в URL-адресах Youtube не является обязательным.
Используйте (\. [Az] +) {1,2} вместо «. *» Для соответствия «.com», «.co.uk», .. после «youtube»
Предполагая, что часть «& feature» является необязательной, регулярное выражение будет выглядеть следующим образом:
/ \ [youtube \] http: \ / \ / (www \.)? Youtube (\. [Az] +) {1,2} \ / watch \? v = ([a-z0-9 _-] *) (& feature = ([az] +))? \ [\ / youtube \] / is
Предполагая, что часть «& feature» является необязательной, И могут быть другие параметры, кроме "функции":
/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&([a-z]+)=([a-z0-9_-])+)*?\[\/youtube\]/is