从查询字符串中删除冗余变量

时间:2011-12-09 04:36:31

标签: php query-string

是否有人知道从查询字符串中删除冗余变量的方法。

例如,从以下网址缩小以下网址:

youtube.com/watch?v=123&feature=g-all&something=lalala

以下内容:

youtube.com/watch?v=123

或者,您如何比较具有不同查询字符串的两个URL以检查它们是否是同一页面?

3 个答案:

答案 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