首页 > 解决方案 > 如何更正使 YouTube ID 与短 URL 一起使用的代码

问题描述

我有一个允许从 YouTube 抓取视频的脚本。但是,如果我使用短 URL,它就不起作用。

我认为问题是由从 URL 获取 YouTube Id 的代码引起的。以下是我认为对此负责的几行:

$youtube_url = $_POST['file'];
$ParseUrl = parse_url($youtube_url);
parse_str($ParseUrl['query'], $youtube_url_prop);
$YouTubeId = isset($youtube_url_prop['v']) ? $youtube_url_prop['v'] : '';

我是新手,所以首先我想确保这是我应该关注的代码。

如果是这样,我希望有人可以建议我如何更改这些行以从短 URL 中获取 YouTube Id。

干杯。

标签: phpparse-url

解决方案


这个函数将为您提供两种 url 格式的视频 ID:

<?php

function extractVideoId($url) {
    $re = '/(youtu\.be\/|youtube\.com\/(watch\?(.*&)?v=|(embed|v)\/))([^\?&"\'>]+)/';
    preg_match($re, $url, $matches, PREG_OFFSET_CAPTURE, 0);

    if(!isset($matches[5])) {
        return null;
    }
    return $matches[5][0];
}


$fullUrl ="https://www.youtube.com/watch?v=dQw4w9WgXcQ";
$shortUrl ="https://youtu.be/dQw4w9WgXcQ";

var_dump(extractVideoId($fullUrl));
var_dump(extractVideoId($shortUrl));

输出 :

string(11) "dQw4w9WgXcQ"
string(11) "dQw4w9WgXcQ"

推荐阅读