使用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');