Как исправить код, который позволяет идентификатору YouTube работать с коротким URL - PullRequest
0 голосов
/ 06 мая 2019

У меня есть скрипт, позволяющий получать видео с YouTube. Тем не менее, это не работает, если я использую короткие URL.

Я думаю, что проблема вызвана кодом, который получает YouTube Id из URL. Вот строки, которые я считаю ответственными за это:

$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 также из коротких URL-адресов.

Приветствие.

1 Ответ

0 голосов
/ 07 мая 2019

Эта функция выдаст вам идентификатор видео для обоих форматов URL:

<?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"
...