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

标签 php regex youtube preg-replace preg-match

在我网站的喊叫/发布区域,我允许用户使用以下正则表达式和preg_replace发布YouTube URL。除非YouTube URL包含其他变量(例如开始时间),否则此方法有效。我已经在Google和StackOverflow上进行了很多研究,但找不到任何有效的示例。

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

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

我下面的代码中的正则表达式会在替换之前从网址中提取PZb9T-eTOcg?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()对每个查询字符串参数执行操作。

关于php - Preg_Replace YouTube URL(带有或不带有开始时间变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38487960/

相关文章:

php - 日期函数显示两个日期之间的所有日期

php - 表单操作忽略了 Google Recaptcha

javascript - 将音符与youtube视频分开,并使用客户端技术进行显示

jquery - 如何在 jquery masterslider 中添加 youtube 和 vimeo 视频作为背景

api - YouTube Data Api v3-subscriptions.list和mine = true

php - 如何从 TCPDF 以字符串形式返回 PDF 文档?

php - 如何使用 LIKE 语句创建 PDO 参数化查询?

c# - 什么时候是撇号而不是撇号 - 验证.Net/Javascript

Python Regex 将评论拆分为数据框

r - 使用 ">"时,"[[:punct:]]"与 `stringr::str_replace_all` 不匹配?