使用str_Replace将文本替换为php

使用str_Replace将文本替换为php,php,str-replace,Php,Str Replace,可能重复: 我现在用这样的东西,但我有很多错误 $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 = $_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有多个url变量用于“&feature=”和其他变量

我只想从youtube url中提取唯一的视频id

ex://www.youtube.com/watch?v=lgT1AidzRWM&feature=related

id之后或之前都没有


有人能帮我拿吗?

你能做的是:

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

示例:

我会使用正则表达式

preg_match("/v=(\w+)/", $video_id, $matches);
print_r($matches);

最好使用正则表达式来实现这一点。 未经测试:

if(preg_match('/[\?&]v=([^&]*?)/', $video_id, $match))
{
    $video_id = $match[1];
}
else exit('video id not found');

使用preg_match是最有效的方法,您可以在字符串中搜索watch?v=直到&或特殊字符,并将其放入变量中

这应该会有所帮助


@mario此问题要求使用字符串替换,而不是正则表达式。@mc10只是因为他不知道有更安全的方法。@mario您不需要使用
preg\u match
。。。。(看我的答案)哇!太快了!真的,这就是我要找的。对不起,我没有考虑过。@M3T不客气^_^
if(preg_match('/[\?&]v=([^&]*?)/', $video_id, $match))
{
    $video_id = $match[1];
}
else exit('video id not found');