Preg_Replace YouTube URL(带或不带开始时间变量)


Preg_Replace YouTube URL with or without Start Time Variable

在我的网站的呼喊/发布区域,我允许用户使用以下正则表达式和preg_replace发布YouTube URL。除非YouTube URL有其他变量(如开始时间),否则这是有效的。我在谷歌和StackOverflow上研究了很多,但找不到任何有效的例子。

我还尝试过preg_match提取视频ID和开始时间,然后用preg_math中的变量preg_replace URL,但也没有成功。

带有开始时间的视频示例如下:https://youtu.be/PZb9T-eTOcg?t=2m8s

我下面代码中的正则表达式会拉动PZb9T eTOcg?在替换之前,距离URL t=2m8s。

谢谢你的帮助!

        $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);

请改用parse_url()

此函数的$result将允许您获取$result['path']$result['query']

然后,可以使用explode('&', $qs)将查询字符串参数与$result['query']分离。

最后你可以使用一个循环&explode('=', $qsp),然后switch()对每个查询字符串参数采取操作。