可能重复:
parse youtube video id using preg_match
Grab the video ID only from youtube's URLs
我现在使用这样的东西,但是我遇到了很多错误...
$video_id = $_GET['url'];
$video_id = str_replace('http://www.youtube.com/watch?v=','',$video_id);
$video_id = str_replace('&feature=related','',$video_id);
$video_id = str_replace('&feature=fvwrel','',$video_id);
$video_id = str_replace('&hd=1','',$video_id);
$video_id = str_replace('&feature=relmfu','',$video_id);
$video_id = str_replace('&feature=channel_video_title','',$video_id);
$video_id = str_replace('&feature=list_related','',$video_id);
$video_id = str_replace('&playnext=1','',$video_id);
$video_id = str_replace('_player','',$video_id);
问题是youtube有'& feature ='和其他人的多个url变量
我想从youtube网址中提取的唯一内容是唯一的视频ID
ex://www.youtube.com/watch?v=lgT1AidzRWM&feature=related
并且在id之前或之前没有任何内容
有人可以帮我搞定吗?
答案 0 :(得分:8)
你可以做的是:
$url = "http://www.youtube.com/watch?v=lgT1AidzRWM&feature=related";
$p_url = parse_url($url);
parse_str($p_url['query'], $p_param);
print_r($p_param['v']);
答案 1 :(得分:3)
$video_id = parse_url($video_id);
parse_str($video_id['query'], $video_id);
echo $video_id['v'];
答案 2 :(得分:1)
我会使用正则表达式
preg_match("/v=(\w+)/", $video_id, $matches);
print_r($matches);
答案 3 :(得分:0)
你最好使用正则表达式。 未测试的:
if(preg_match('/[\?&]v=([^&]*?)/', $video_id, $match))
{
$video_id = $match[1];
}
else exit('video id not found');
答案 4 :(得分:0)
使用preg_match将是最有效的方法,你可以搜索字符串观看?v =直到&或特殊字符并将其放入变量中。
这应该有帮助