【问题标题】:Fetch YouTube Video Id from youtube URL in zend framework从 zend 框架中的 youtube URL 获取 YouTube 视频 ID
【发布时间】:2014-05-22 08:25:07
【问题描述】:

这是我来自 facebook ID 的 YouTube Tube URL。我在 Zend Framework 的 facebook 中使用 FQL Query 获取了这个 url

这是我的网址 = "http://www.youtube.com/attribution_link?a=AbE6fYtNaa4&u=%2Fwatch%3Fv%3DNbyHNASFi6U%26feature%3Dshare"

现在我需要获取它的 ID,以便我可以将它传递给这个代码,以便我可以生成它的视频详细信息。

function listYoutubeVideo($id) {
    $video = array();

    try {   
        $yt = new Zend_Gdata_YouTube();

        $videoEntry = $yt->getVideoEntry($id);



        $videoEntry = $yt->getQueryUrl($id);


            $videoThumbnails = $videoEntry->getVideoThumbnails();
            $video = array(
                'thumbnail' => $videoThumbnails[0]['url'],
                'title' => $videoEntry->getVideoTitle(),
                'description' => $videoEntry->getVideoDescription(),
                'tags' => implode(', ', $videoEntry->getVideoTags()),
                'url' => $videoEntry->getVideoWatchPageUrl(),
                'flash' => $videoEntry->getFlashPlayerUrl(),
                'dura' => $videoEntry->getVideoDuration(),
                'id' => $videoEntry->getVideoId()
            );

    } catch (Exception $e) {

        echo $e->getMessage();
        exit();

    }


    return $video;
}

所以我只需要从 Zend 框架中的 youtube URL 中找到它的 youtube ID。请为我提供解决方案。 "Zend_Gdata_YouTube" 类中是否存在任何方法,我可以通过其 youtube URL 获取其 ID 表单

【问题讨论】:

  • 对不起,如果这听起来很愚蠢,但网址中的视频 ID 不是吗?不就是v 参数吗?你可以从网址中提取它吗?
  • 是的,我知道 youtube ID 存在于 V 参数之后。基本上我是从 facebook 的用户资料中获取这个 youtube url。

标签: php zend-framework


【解决方案1】:

您拥有唯一的视频 ID。在您的情况下 (https://www.youtube.com/watch?v=NbyHNASFi6U&feature=share) ID 等于 NbyHNASFi6U

$url = 'http://www.youtube.com/attribution_link?a=AbE6fYtNaa4&u=%2Fwatch%3Fv%3DNbyHNASFi6U%26feature%3Dshare';
$url = urldecode($url);
$query_string = end(explode('?',$url));
parse_str($query_string);
$videoID = $v;
print $videoID;
// OUTPUT
NbyHNASFi6U

视频观看页面 URL 始终采用以下格式:

http://www.youtube.com/watch?v=XXXXXXXXXXX

其中 XXXXXXXXXXX 是唯一的视频 ID,由 11 个字母和数字组成(如果没记错的话,还包括连字符和下划线)。

【讨论】:

  • 是的,我知道 youtube ID 存在于 V 参数之后。基本上我是从 facebook 的用户个人资料中获取这个 youtube url。所以你能建议我如何通过 Youtube API 或其他方式从这个 url 获取 Id
  • @Omega 我更新了答案(对于您的示例网址)。现在您可以将变量 $VideoID 传递给函数 listYoutubeVideo
【解决方案2】:
public function get_id($url)
{
    $ytshorturl = 'youtu.be/';
    $ytlongurl = 'www.youtube.com/watch?v=';
    if (strpos($url, $ytshorturl) !== false) {
        $url = str_replace($ytshorturl, $ytlongurl, $url);
    }
    $components = parse_url($url);
    parse_str($components['query'], $results);
    return $results['v'];
}

$url = "https://youtu.be/oeg192rQ1xE"; //sample url

print(get_id($url));

【讨论】:

  • 请解释您的解决方案。
  • 我已经添加了带有url的函数调用,请检查。
  • 我已编辑您的答案以确保添加的代码显示为代码。我确实了解您的解决方案,但新手不会理解。这就是为什么你需要用文字来解释你的解决方案,这样即使是经验不足的人也会理解它。
猜你喜欢
  • 1970-01-01
  • 2011-05-02
  • 2012-05-22
  • 2011-03-28
  • 2016-01-21
  • 2017-08-17
  • 2019-12-07
  • 2011-07-22
相关资源
最近更新 更多