【问题标题】:Strip Youtube Link from URL从 URL 中删除 Youtube 链接
【发布时间】:2012-05-09 22:47:19
【问题描述】:

我拥有一个允许用户下载 Youtube 视频的网站。我需要检测是否存在 youtube url 的 php 脚本,例如:

givemeyoutube.com 将用户带到我的正常网站,但如果他们输入,

www.givemeyoutube.com/watch?v=OZLUa8JUR18

如何将它们带到我网站的索引中并去掉“watch?v=OZLUa8JUR18”并将其存储为变量?

更新:我该怎么做才能检查 URL,如果它包含 "watch?v=" 然后重定向到另一个页面?

【问题讨论】:

    标签: php regex parsing youtube strip


    【解决方案1】:

    将 preg_match 与以下正则表达式一起使用

    /(\/watch\?v=)([a-zA-Z0-9_-]+)/

    【讨论】:

      【解决方案2】:

      预匹配 \b(?<=v.|/)[a-zA-Z0-9_-]{11,}\b 作为正则表达式

      【讨论】:

        【解决方案3】:

        您可以使用mod_rewrite 妥善处理watch?V=123456 之类的请求

        在您的.htaccess 文件中:

        RewriteEngine On
        RewriteBase /
        RewriteRule ^watch index.php [QSA]
        

        然后在index.php:

        if( isset( $_GET['v'] ) ) {
            // access the v parameter with $_GET['v'];
        }
        

        【讨论】:

          【解决方案4】:

          我认为 url 重写更适合这项任务,因为无论如何您都需要重写 url 以确保 watch 打开一个实际的 php 页面。

          我会使用类似的东西:

          RewriteEngine On
          RewriteBase /
          
          RewriteRule ^watch.*$ /index.php?action=watch [QSA]
          

          此规则将导致所有以watch 开头的请求都被路由到index.php,并带有原始查询字符串(由于[QSA])和一个名为action 的附加参数,其值为watch

          【讨论】:

          • 这些是做什么的: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #if in subdirectory RewriteBase /subdirectory/index.php RewriteRule (.+)? /indekx.php [L]
          • @Jack Brown 如果您重写所有内容,这些都是必要的,而不仅仅是以watch 开头的请求。他们确保现有的文件和目录不会被重写,只有不存在的页面的 url。
          猜你喜欢
          • 2017-09-28
          • 2019-09-15
          • 2016-01-18
          • 1970-01-01
          • 2011-12-08
          • 2014-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多