Получить КОД видео с YouTube по URL


у Меня есть такая строка "https://www.youtube.com/watch?v=jNQXAC9IVRw" и я хочу, чтобы получить только ИДЕНТИФИКАТОР, а именно, начиная с "?v="

Как я могу это сделать в PHP?

 12
php
Author: Joao Paulo, 2014-12-12

4 answers

Можно использовать parse_url для извлечения фрагментов url-адрес, и сочетать с parse_str который преобразует строки запроса действителен в ассоциативный массив ($param).

<?php
$url = 'https://www.youtube.com/watch?v=Y3eZEtwQVI8&list=UUdm1fwk5iqteE0MVOBUuE8Q%22';
$itens = parse_url ($url);
parse_str($itens['query'], $params);

echo '<pre>';
print_r($params);

Выход:

Array
(
    [v] => Y3eZEtwQVI8
    [list] => UUdm1fwk5iqteE0MVOBUuE8Q"
)

Например

 18
Author: rray, 2014-12-15 14:39:38

Можно использовать explode

$video  = "https://www.youtube.com/watch?v=jNQXAC9IVRw";
$id = explode("?v=", $video);

Другие примеры - здесь

 5
Author: Rene Sá, 2014-12-12 16:21:18

Вы Можете использовать regex для извлечения ID:

$patternRegex = "/http[s]?:\\/\\/www\\.youtube\\.com\\/watch\\?v=(\\w+)/";
$urlYoutube = "https://www.youtube.com/watch?v=jNQXAC9IVRw";

preg_match($patternRegex, $urlYoutube, $matches);

См здесь, работать с их пример.

, Объясняя $patternRegex:

  • /http[s]?:\\/\\/www\\.youtube\\.com\\/watch\\?v= : Эта часть ищет начале URL-адреса.
  • [s]? - Указывает, что символ s может произойти или ноль раз.
  • (\\w+)/ : Эта часть захватывает все алфавитно-цифровые символы и underscores наличии после ?=v до конца URL-адреса.
 3
Author: Omni, 2014-12-12 17:26:47

Можно использовать таким образом, что любой формат url гнев работать

function YoutubeID($url)
{
    if(strlen($url) > 11)
    {
        if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) 
        {
            return $match[1];
        }
        else
            return false;
    }
    return $url;
}
 3
Author: Alvaro Louzada, 2014-12-13 02:28:28