频道ID的YouTube频道URL(PHP)

时间:2018-09-14 21:23:49

标签: php api youtube youtube-api

我正在使用YT Api V3制作一个Web应用程序,我需要我的用户输入其YT频道URL。我希望我的PHP脚本将此URL转换为通道ID(我使用通道ID方法构建了所有脚本,但我不想修改所有文件)。

我的问题是:在PHP中,如何将YouTube频道URL转换为YouTube频道ID?

1 个答案:

答案 0 :(得分:0)

要将答案从上方扩展到YouTube用户网址和播放列表网址(除了YouTube频道网址):

YouTube频道ID:

URL: www.youtube.com/channel/[channel_id]

YouTube rss: www.youtube.com/feeds/videos.xml?channel_id=[channel_id]

YouTube用户名:

URL: youtube.com/user/ [用户名]

YouTube rss :youtube.com/feeds/videos.xml?user= [用户名]

YouTube播放列表:

URL: youtube.com/playlist?list=[playlist_id]

YouTube rss :youtube.com/feeds/videos.xml?playlist_id=[playlist_id]

我们可以为每一个使用正确的正则表达式,并获取ID或形成正确的YouTube rss网址,如下所示:

 function getYouTubeXMLUrl( $url, $return_id_only = false ) {

    $xml_youtube_url_base = 'https://www.youtube.com/feeds/videos.xml';
    $preg_entities        = [
        'channel_id'  => '\/channel\/(([^\/])+?)$', //match YouTube channel ID from url
        'user'        => '\/user\/(([^\/])+?)$', //match YouTube user from url
        'playlist_id' => '\/playlist\?list=(([^\/])+?)$',  //match YouTube playlist ID from url
    ];


    foreach ( $preg_entities as $key => $preg_entity ) {
        if ( preg_match( '/' . $preg_entity . '/', $url, $matches ) ) {
            if ( isset( $matches[1] ) ) {
                if($return_id_only === false){
                    return $xml_youtube_url_base . '?' . $key . '=' . $matches[1];
                }else{
                    return [
                        'type' => $key,
                        'id' => $matches[1],
                    ];
                }

            }
        }
    }

}

$url     = 'https://www.youtube.com/channel/UCBLAoqCQyz6a0OvwXWzKZag';
$xml_url = getYouTubeXMLUrl($url);

echo $xml_url; //outputs https://www.youtube.com/feeds/videos.xml?channel_id=UCBLAoqCQyz6a0OvwXWzKZag

$entity_id_array =  getYouTubeXMLUrl($url, true);

print_r($entity_id_array); // outputs Array ( [type] => channel_id [id] => UCBLAoqCQyz6a0OvwXWzKZag );