【问题标题】:Preg_Replace YouTube URL with or without Start Time VariablePreg_Replace YouTube URL 有或没有开始时间变量
【发布时间】:2016-11-24 02:03:24
【问题描述】:

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

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

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

下面代码中的正则表达式会在替换之前从 URL 中提取 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);

【问题讨论】:

    标签: php regex youtube preg-replace preg-match


    【解决方案1】:

    请改用parse_url()

    这个函数的$result,可以让你得到$result['path']$result['query']

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

    最后,您可以再次使用循环和explode('=', $qsp),然后switch() 对每个查询字符串参数执行操作。

    【讨论】:

      猜你喜欢
      • 2014-06-04
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 2013-10-30
      • 2018-09-21
      相关资源
      最近更新 更多