如何更正使 YouTube ID 与短 URL 一起使用的代码

How to correct the code that gets the YouTube ID to work with the short URL

我有一个脚本可以从 YouTube 抓取视频。但是,如果我使用短网址,它就不起作用。

我认为问题是由从 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'] : '';

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

如果是这样,我希望有人可以建议我如何更改该行以从短网址获取 YouTube ID。

干杯。

此函数将为您提供两种 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"