php从querystring中删除单个变量值对


php remove single variable value pair from querystring

我有一个页面,根据许多参数(即带值的变量)列出项目。

listitems.php?color=green&size=small&cat=pants&pagenum=1
为了能够编辑列表,我有一个参数edit=1,它被附加到上面的查询字符串中以给出:

listitems.php?color=green&size=small&cat=pants&pagenum=1&edit=1到目前为止还不错。

当用户完成编辑时,我有一个退出编辑模式的链接。我希望这个链接指定整个查询字符串——不管它是什么,因为这取决于用户的选择——除了删除edit=1

当我只有几个变量时,我只是在链接中手动列出它们,但现在有了更多,我希望能够以编程方式删除edit=1

我应该搜索edit=1,然后什么都不替换吗?

$qs = str_replace("&edit=1, "", $_SERVER['QUERY_STRING']);
<a href='{$_SERVER['PHP_SELF']}?{$qs}'>return</a>;

或者什么是最干净、最无错误的方法。

注意:当我从一页转到另一页时,我会遇到类似的情况,我想取出pagenum并用不同的pagenum替换它。在那里,由于页码不同,我不能只搜索pagenum=1,但如果有什么不同的话,我必须搜索pagenum =$pagenum

您可以使用parse_str()来解析查询字符串,删除不需要的部分,并通过http_build_query()构建新的部分,如

parse_str($_SERVER['QUERY_STRING'], $params);
unset($params['edit']);
$new_query_string = http_build_query($params);