使用str_replace用php替换文本

时间:2011-11-21 19:33:42

标签: php str-replace

  

可能重复:
  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之前或之前没有任何内容

有人可以帮我搞定吗?

5 个答案:

答案 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']);

示例:http://codepad.org/BiWKxfSZ

答案 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 =直到&或特殊字符并将其放入变量中。

这应该有帮助

http://php.net/manual/en/function.preg-match.php