取得 youtube id
youtube 現在分享網址有好多種,
可能是這樣:
可能是這樣:
https://www.youtube.com/watch?v=p_T3oNKjAT8
不確定User會填入哪一種分享網址的情況下,下面這方法可以解析出這些類型的 youtube id
- http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player
- http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player
- http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player
- http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player
- http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player
- http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player
- http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player
- http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player
試試看:
<?php
/**
* Get Youtube video ID from URL
*
* @param string $url
* @return mixed Youtube video ID or FALSE if not found
*/
function getYoutubeIdFromUrl($url) {
$parts = parse_url($url);
if(isset($parts['query'])){
parse_str($parts['query'], $qs);
if(isset($qs['v'])){
return $qs['v'];
}else if(isset($qs['vi'])){
return $qs['vi'];
}
}
if(isset($parts['path'])){
$path = explode('/', trim($parts['path'], '/'));
return $path[count($path)-1];
}
return false;
}
// Test
$urls = array(
'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player',
'http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player',
'http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player'
);
foreach($urls as $url){
echo $url . ' : ' . getYoutubeIdFromUrl($url) . "\n";
}[……]


