从请求URI(PHP)中删除一个查询字符串

从请求URI(PHP)中删除一个查询字符串,php,string,query-string,Php,String,Query String,从url中删除特定查询字符串时遇到问题。我想保留其余的查询,但只需转储最后一个查询。问题是每次查询字符串可能有不同的值,所以我不知道怎么做 例如,我的网站url可能是: http://sitename.com/index.php?Cat=Bus&Origin=UK 我想做的是保留Cat=Bus并删除Origin=UK 因此,如果我试图将原产地改为德国,我会写: echo '<a href="'.$_SERVER['REQUEST_URI'].'&Origin=German

从url中删除特定查询字符串时遇到问题。我想保留其余的查询,但只需转储最后一个查询。问题是每次查询字符串可能有不同的值,所以我不知道怎么做

例如,我的网站url可能是:

http://sitename.com/index.php?Cat=Bus&Origin=UK
我想做的是保留Cat=Bus并删除Origin=UK

因此,如果我试图将原产地改为德国,我会写:

echo '<a href="'.$_SERVER['REQUEST_URI'].'&Origin=Germany">Germany</a>';
使用请求URI。 然后我想把它从原点去掉=* 完成后,将其传递到字符串中,并在末尾添加新的原点

我想:

$theURI = $_SERVER['REQUEST_URI'];
但我不知道如何从头到尾

$amended = $theURI - '&Origin=*'
然后以

echo '<a href="'.$amended.'&Origin=Germany">Germany</a>';
echo';
我只是不知道如何在PHP中表达$modified函数


有人能帮忙吗?这用于在国家之间进行排序

这取决于您获取来源的方式(静态url与动态url),这是对
$\u 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>";
$url=$\u服务器['REQUEST\u URI']//编辑:我通常使用$\u SERVER['PHP\u SELF'],所以如果请求URI失败,请尝试此方法
$get_param=$value//$值可以是德国、英国、波兰等
$url.=“&Origin=”.$get_参数;
回声“;

我希望这对你有所帮助

如果你知道确切的变量,而且变量不多,你可以参考戴尔的评论:

echo '<a href="/index.php?Cat=' . $_GET['Cat'] . '&Origin=Germany">Germany</a>';
echo';
如果没有,您可以使用str_替换:

$url = $_SERVER['REQUEST_URI'];
$url = str_replace("origin=" . $_GET["origin"], "", $url);
$url = preg_replace("#&+#", "&", $url);
... 
echo "<a href='" . $url . "&origin=Germany"'>Germany</a>";
$url=$\u服务器['REQUEST\u URI'];
$url=str_replace(“origin=”..$\u GET[“origin”],“”,$url);
$url=preg_replace(“#&+#”、“&”、$url);
... 
回声“;

我会使用str_replace,但每次&Origin都会不同。它不会永远是英国,它可能是一个其他国家的主机
echo'?啊,我忘了添加-我正在重用查询,所以它可能也有子类别。这就是为什么我在每个页面上使用request_uri,因为它是一个按国家排序的功能。因此,在主类别中,查询将起作用。但是如果url是
http://sitename.com/index.php?Cat=Bus&SubCat=Whatever&Origin=UK
查询不起作用。所以我必须添加一个if-SubCat-is-defined语句和所有其他if语句。它开始变得相当混乱。我的问题是每次都必须定义$value。这是一个我可以点击侧面按国家对条目进行排序的地方。所以我可能会说两个选项:
如果(!$\u GET[“Origin”]){echo'按国家排序:';echo'
';echo'';echo'
';echo';}
但是如果我已经有了一个Origin集,我想更改那个Origin。但是如果我在常规的&cat id出现问题之后得到了&subCat,那么它必须在某个地方定义,不管是用户输入还是硬编码。我会在你的问题中添加一个编辑,提到它被用于排序,这可能会有所帮助。我会重新考虑我的答案,虽然这看起来很像我想要的!事实上我已经测试过了。太好了,谢谢。粘贴正确的工作-我没有想到使用$\u GET与str\u replace或preg\u replace一起使用,谢谢<代码>$url=$\u服务器['REQUEST\u URI'];$url=str_replace(“Origin=”..$\u GET[“Origin”],“”,$url);$url=preg_replace(“#&+#”、“&”、$url);回声“按国家排序:”;回声“
”;回声';回声“
”;回声'哦,因为我对preg_替换不太了解,你能告诉我这些是做什么的吗?“#&+#”是一个正则表达式。我对它们也不太了解,但这一个会检查是否有多个'&',并将其替换为只有一个'&'。如果原点不是结束参数,则此选项非常有用。老实说,我不确定在
str\u replace
中是否需要它,或者是否也需要一个&但我应该做这项工作:)
$url = $_SERVER['REQUEST_URI'];
$url = str_replace("origin=" . $_GET["origin"], "", $url);
$url = preg_replace("#&+#", "&", $url);
... 
echo "<a href='" . $url . "&origin=Germany"'>Germany</a>";