Чтобы развернуть ответ сверху на URL пользователя YouTube и URL плейлиста, кроме URL канала YouTube:
Идентификатор канала YouTube:
url: www.youtube.com/channel/[channel_id]
YouTube rss: www.youtube.com/feeds/videos.xml?channel_id=[channel_id]
Имя пользователя YouTube:
url: youtube.com/user/[username]
YouTube rss: youtube.com/feeds/videos.xml?user=[username]
Плейлист YouTube:
url: youtube.com/playlist?list=[playlist_id]
YouTube rss: youtube.com/feeds/videos.xml?playlist_id=[playlist_id]
Мы можем использовать правильные регулярные выражения для каждого и получить идентификатор или форму правильного URL-адреса YouTube следующим образом:
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 );