【问题标题】:Insert YouTube link and show only ID插入 YouTube 链接并仅显示 ID
【发布时间】:2014-04-04 15:25:16
【问题描述】:

我不知道从哪里开始。我添加了一个 YouTube 页面并显示 YouTube 页面。

我可以将 YouTube 链接插入我的 MySQL。我的脚本仅在我使用此部分时才有效: https://www.youtube.com/watch?v=[XXXXXXXXXXX]

我想插入 YouTube 的整个视频链接。

因为我使用的是 YouTube 的嵌入源,如果我插入 YouTube 链接脚本只需要显示视频 ID,但整个链接仍会显示在 MySQL 中

<iframe width="560" height="315" src="//www.youtube.com/embed/'.$nbbb["youtube"].'" frameborder="0" allowfullscreen></iframe>

【问题讨论】:

  • 还是不明白你想说什么。
  • @RahilWazir 当我为 e.x. 插入 yt 链接时。 https://www.youtube.com/watch?v=[XXXXXXXXXXX]进入mysql,从mysql中选择时只显示[XXXXXXXXXXX]
  • 我的是一个简单的解决方案。不确定为什么有人对一个可以在其他地方应用的简单逻辑的简单有效答案投了反对票。正则表达式可以工作,但对于您在受控环境中尝试实现的目标来说太过分了。
  • @MattTheNinja 那就帮简单的答案投票吧,哈哈

标签: php mysql youtube


【解决方案1】:

你可以使用简单的子字符串函数

     $fullurl = fromdatabase//whatever that is your full url.
     $videoid=substr($fullurl,-11);
     echo"<iframe......" . $videoid . ".....";

这适用于所有以最后 11 位数字作为 youtube 视频 ID 的字符串。

干杯

【讨论】:

  • 是的,但是 OP 提到他只使用了那个 url,我提供了他需要的尽可能多的内容,使用 substr 更简单。他可以调整它以适应他的需要。顺便说一句,你是对的。 +1
  • 脚本仅适用于 https,导致其 32 字符。是否可以串更多
  • 当然,对于普通的http,使用31而不是32。你可以从头数到“=”的字符用于其他目的。见th1.php.net/manual/en/function.substr.php
  • 我不能使用$videoid=substr($fullurl,32,11); $videoid=substr($fullurl,31,11); 有没有其他方法?抱歉打扰你,我是这个功能的新手。
  • 为什么?,错误?你可以使用 $videoid=substr($fullurl,-11);查看我的新编辑,它适用于所有网址。
【解决方案2】:

我想我理解的是你在?v=之后进入数据库的XXXXXXX部分的URL。

在 PHP 中,您可以使用 strpossubstr 来执行此操作

首先要找到?v=的位置

$YouTubeURL = 'https://www.youtube.com/watch?v=XXXXXXXXXXX';
$pos = strpos($YouTubeURL);
$pos + 3 //Add 3 to account for ?v=

接下来按那个长度剪掉它

$answer = substr($YouTubeURL, $pos);

这应该是你的答案或至少引导你。如果您将其存储在您的数据库中,它将在您当前的脚本中正确显示。 (如果这是你想要做的。)

【讨论】:

  • 我不明白。根据php.net strpos() 应该至少需要2个参数,在你的情况下它应该是 strpos($url,"?");
【解决方案3】:

您可以使用正则表达式。

这适用于所有类型的 youtube 网址:

  • 子域或无子域
  • youtu.be 网址
  • https 和 http
  • /v/ 链接
/**
 * get youtube video ID from URL
 *
 * @param string $url
 * @return string Youtube video id or FALSE if none found. 
 */
function youtube_id_from_url($url) {
    $pattern = 
        '%^# Match any youtube URL
        (?:https?://)?  # Optional scheme. Either http or https
        (?:www\.)?      # Optional www subdomain
        (?:             # Group host alternatives
          youtu\.be/    # Either youtu.be,
        | youtube\.com  # or youtube.com
          (?:           # Group path alternatives
            /embed/     # Either /embed/
          | /v/         # or /v/
          | /watch\?v=  # or /watch\?v=
          )             # End path alternatives.
        )               # End host alternatives.
        ([\w-]{10,12})  # Allow 10-12 for 11 char youtube id.
        $%x'
        ;
    $result = preg_match($pattern, $url, $matches);
    if (false !== $result) {
        return $matches[1];
    }
    return false;
}

echo youtube_id_from_url('https://www.youtube.com/watch?v=XXXXXXXXXXX'); # XXXXXXXXXXX

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 2017-09-27
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2011-12-05
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多