用php替换url的一部分

时间:2010-12-15 14:46:17

标签: php regex url youtube

嘿那里! 我有一个简单的问题,我正在努力,希望你们可以看看。 我有一个输入字段,用户可以在其中放入YouTube链接,您的典型单页工作正常,例如:

youtube.com/watch?v=c3sBBRxDAqk

watch?v=11characters正常工作

但是如果用户输入除上例之外的任何内容,例如:

youtube.com/watch?v=tC0E1id4raw&feature=topvideos
//or
youtube.com/watch?v=smETLCCPTVo&feature=aso

有没有办法获取上面的2个网址并删除w atch?v=11characters之后的所有字符?

所以实质上,转这个

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos"

youtube.com/watch?v=tC0E1id4raw removing & and onwards

由于垃圾邮件阻止,我不得不删除http位

有一种简单的方法吗?

3 个答案:

答案 0 :(得分:4)

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos";

list($keep, $chuck) = explode('&', $url);

echo $keep;

答案 1 :(得分:0)

执行此操作的一种方法是使用explode

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos";

$newurl = explode("&", $url);

“&”之前的一切将在$ newurl [0]中,之后的所有内容都将在$ newurl [1]中。

答案 2 :(得分:0)

不需要正则表达式:

$parts = parse_url($url);
$params = array();
parse_str($parts['query'], $params);

如果安装了PECL pecl_http:

$url = http_build_url($url, 
                      array('query' => 'v='. $params['v']), 
                      HTTP_URL_REPLACE | HTTP_URL_STRIP_FRAGMENT);

或没有pecl_http:

$url = $parts['scheme'] . $parts['host'] .  $parts['path'] .  '?v=' . $params['v'];

这对查询参数顺序的更改更加健壮。

参考:parse_urlparse_strhttp_build_url