如何从php和cakephp中的youtube的url获取视频ID
我有这个网址
http://youtu.be/JaFfJN_iKdA
如何通过正则表达式从中获取视频ID
答案 0 :(得分:9)
$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];
}
这适用于一系列常见的YT URL格式,包括您发布的格式。
答案 1 :(得分:1)
您可以使用parse_url()
函数代替正则表达式:
<?php
$url = parse_url("http://youtu.be/JaFfJN_iKdA");
echo substr($url["path"], 1);
答案 2 :(得分:0)
你可以使用库 http://autoembed.com/ 它还涵盖了100个其他视频门户
答案 3 :(得分:0)
努力工作后,我创建了一个获取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;
}