2016-07-20 3 views
0

В зоне крика/почты моего сайта я разрешаю пользователям размещать URL-адреса YouTube, используя следующие регулярные выражения и preg_replace. Это работает, если URL-адрес YouTube не содержит дополнительных переменных, таких как время начала. Я много исследовал его в Google и StackOverflow, но не могу найти никаких рабочих примеров.Preg_Replace URL-адрес YouTube с или без изменения времени начала

Я также попытался preg_match вытащить как идентификатор видео, так и время запуска, а затем preg_replace URL с переменными из preg_match, но также не имел успеха.

Пример видео с начальным временем: https://youtu.be/PZb9T-eTOcg?t=2m8s

Регулярное выражение в моем коде ниже будет тянуть PZb9T-eTOcg т = 2m8s из URL перед его заменой?.

Благодарим за помощь!

 $text = preg_replace('#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#','<br /><div class="cover overlay hover" style="height: 240px;"><img src="https://img.youtube.com/vi/$1/0.jpg" alt="music" class="img-responsive"><a title="YouTube Video" href="https://www.youtube.com/embed/$1?autoplay=1" class="overlay overlay-full overlay-hover overlay-bg-black video" style="height: 240px;"><span class="v-center"><span class="btn btn-lg btn-circle btn-white"><i class="fa fa-play"></i></span></span></a></div>', $text); 

ответ

0

Используйте вместо этого parse_url().

$result этой функции позволит вам получить $result['path'] и $result['query'].

Затем вы можете использовать explode('&', $qs) для разделения параметров запроса от $result['query'].

Наконец, вы можете использовать цикл & explode('=', $qsp), затем switch(), чтобы принимать действия для каждого параметра строки запроса.

Смежные вопросы