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位
有一种简单的方法吗?
答案 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'];
这对查询参数顺序的更改更加健壮。