Как получить идентификатор видео с URL-адреса YouTube в PHP и CakePHP - PullRequest
1 голос
/ 23 июня 2011

Как получить идентификатор видео из URL-адреса YouTube в PHP и CakePHP

У меня есть этот URL

http://youtu.be/JaFfJN_iKdA

Как получить идентификатор видео с помощью регулярного выражения

Ответы [ 4 ]

9 голосов
/ 23 июня 2011
$url = "http://youtu.be/JaFfJN_iKdA";
if (preg_match('%(?:youtube\.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $result)) {
    $video_id = $result[1];
}

Это будет работать для нескольких распространенных форматов URL YT, включая тот, который вы опубликовали.

1 голос
/ 23 июня 2011

Вместо регулярных выражений вы можете использовать функцию parse_url():

<?php
$url = parse_url("http://youtu.be/JaFfJN_iKdA");
echo substr($url["path"], 1);
0 голосов
/ 01 февраля 2012

после тяжелой работы, я делаю функцию для получения информации YouTube

function getYoutubeThumbnail($url)
{
    if(preg_match('![?&]{1}v=([^&]+)!', $url . '&', $m))
    {
        $videoid = $m[1];
    }
    else if(preg_match('~/v/([0-9a-z_]+)~i', $url, $m))
    {
        $videoid = $m[1];
    }
/*  else if (preg_match('%(?:youtube\.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $result)) 
    {
        $video_id = $result[1];
    }*/
    $youtube_thumbnail = 'http://img.youtube.com/vi/' . $videoid . '/default.jpg';

    $c = curl_init();

    $url = trim($url);

    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($c, CURLOPT_URL, $url);

    $contents = curl_exec($c);

    curl_close($c);


    $feed = "http://gdata.youtube.com/feeds/api/videos/".$videoid;

    $newInfo = trim(@file_get_contents($feed));

    preg_match('/<media:title(.*?)<\/media:title>/', $newInfo, $result);

    $title = strip_tags($result[0]);

    preg_match('/<media:keywords(.*?)<\/media:keywords>/', $newInfo, $result);

     $desc = strip_tags(str_replace(",", "", $result[0]));

     //embed path
     $embed_path = "http://www.youtube.com/embed/".$videoid;



    $youtube_info = array('videoid' => $videoid,'title' => $title, 'description' => $desc,'youtube_thumbnail' => $youtube_thumbnail,'embed_path' => $embed_path) ;

    return $youtube_info;

}
0 голосов
/ 23 июня 2011

вы можете использовать библиотеку http://autoembed.com/, она также охватывает 100 других видеопорталов

...