Вы можете, как упоминалось ранее, сначала получить все до &, или вы можете просто сделать следующее (только набрав регулярное выражение для удобства).
#(http://(www.)?youtube.com)?/(v/|watch\?v\=)([-|~_0-9A-Za-z]+)#i
, чтобы сделать его более общим, вы можете сделать следующее:
#(:?(:?(:?www\.)?youtube\.(:?[^/]{2,5})/(:?v/|watch\?v\=))|(:?youtu.be/))([-|~_0-9A-Za-z]+)#
Регулярному выражению не нужно соответствовать всему.Все :? , которые должны избегать preg_replace для сохранения ссылки, и при этом она должна также соответствовать сокращенным URL-адресам.В этом случае ссылка будет храниться в $1
.