В системе, которую я разрабатываю, мне нужно узнать ссылку 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?
Как насчет
|\[youtube\]http://www.youtube\.(.*?)/watch\?v=([a-zA-Z0-9_-]*)[%&=#a-zA-Z0-9_-]*\[\/youtube\]|s
EDIT: Изменено регулярное выражение, чтобы сохранить только идентификатор видео в круглых скобках.
Заметки:
Я бы выполнил нечувствительность к регистру по URL-адресам (/ i)
, соответствует чему угодно; использование \. вместо этого, чтобы соответствовать URL-адресу
Кроме того, "www." в Youtube URL является необязательным.
Используйте (\. [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(\.[az]+){1,2}\/watch\?v=([a-z0-9_-]*)(&([az]+)=([a-z0-9_-])+)*?\[\/youtube\]/is