是否有人知道从查询字符串中删除冗余变量的方法。
例如,从以下网址缩小以下网址:
youtube.com/watch?v=123&feature=g-all&something=lalala
以下内容:
youtube.com/watch?v=123
或者,您如何比较具有不同查询字符串的两个URL以检查它们是否是同一页面?
答案 0 :(得分:3)
尝试:
$url = "youtube.com/watch?v=123&feature=g-all&something=lalala"; echo $finalUrl = array_pop(array_reverse(explode("&", $url)));
答案 1 :(得分:3)
php内置了这个函数; parse_url()和parse_str()
parse_str( 'watch?v=123&feature=g-all&something=lalala' );
// returns
array(3) {
["v"]=>
string(3) "123"
["feature"]=>
string(5) "g-all"
["something"]=>
string(6) "lalala"
}
因此,您可以使用这两个函数来提取所需的参数,而不必爆炸并猜测参数的位置。
$url = parse_url( "youtube.com/watch?v=123&feature=g-all&something=lalala" );
parse_str( $url['query'], $query );
echo 'youtube.com/?v=' . $query["v"]; // youtube.com/?v=123
这应该比爆炸甚至使用正则表达式更好。
答案 2 :(得分:2)
<?php
$url = "youtube.com/watch?v=123&feature=g-all&something=lalala";
$final = explode("&", $url, 2);
echo $final[0];
?>
youtube.com/watch?v=123