从REQUEST_URI(PHP)中删除一个查询字符串

时间:2012-12-15 09:29:03

标签: php string query-string

我在从网址中删除特定查询字符串时遇到问题。我想保留其余的查询,但只是转储最后一个。问题是查询字符串每次都可能有不同的值,所以我不知道如何做到这一点。

例如我的网站网址可能是:

http://sitename.com/index.php?Cat=Bus&Origin=UK

我想做的是保持Cat = Bus并删除Origin = UK

因此,如果我尝试将原点改为德国,我写道:

echo '<a href="'.$_SERVER['REQUEST_URI'].'&Origin=Germany">Germany</a>';

所以它需要它所在的页面:

http://sitename.com/index.php?Cat=Bus&Origin=UK

使用Request_URI。 我想剥掉它&amp; Origin = * 然后,一旦完成它就将它传递给一个字符串并添加新的原点在最后。

我想:

$theURI = $_SERVER['REQUEST_URI'];

但我不知道如何从头到尾。

$amended = $theURI - '&Origin=*'

然后以

结束
echo '<a href="'.$amended.'&Origin=Germany">Germany</a>';

我只是不知道如何在PHP中表达这个$ modified函数。

有人可以帮忙吗?这用于在国家之间进行分类

2 个答案:

答案 0 :(得分:1)

取决于您获取原点的方式(静态网址与动态网址),这是对$_GET超全局的简单操作。

$url = $_SERVER['REQUEST_URI']; //edit: I usually use $_SERVER['PHP_SELF'], so try this if REQUEST_URI fails
$get_param = $value; //$value can be germany, england, poland, etc etc
$url .= "&Origin=".$get_param;
echo "<a href='".$url."'>$get_param</a>";

我希望这会有所帮助

答案 1 :(得分:1)

如果您知道确切的变量并且它们不是那么多,您可以使用Dale的评论:

echo '<a href="/index.php?Cat=' . $_GET['Cat'] . '&Origin=Germany">Germany</a>';

如果没有,你可以使用str_replace:

$url = $_SERVER['REQUEST_URI'];
$url = str_replace("origin=" . $_GET["origin"], "", $url);
$url = preg_replace("#&+#", "&", $url);
... 
echo "<a href='" . $url . "&origin=Germany"'>Germany</a>";