如何保留一些 URL 参数并删除所有其他参数

How to keep some URL parameters and remove all others

我有一个 URL 参数范围:

locations.php?use_url=on&zipcode=Axminster%2C+Devon+EX13+5RZ&categories%5B0%5D=2&radius=30&checkboxnational=1&submit=loading+results...&resultbar=25&sortbar=distance&lat=50.77643440000001&lng=-2.9810417&swlat=50.7773526197085&swlng=-2.9814507999999478&nelat=50.7800505802915&nelng=-2.9749947000000247&outcode=EX13

我目前正在使用 unset() 命令删除所有参数,但一些基本参数除外,例如 'lat'、'lng'、'swlat、'swlng',通过以下代码:

$url = $_SERVER["REQUEST_URI"];
$x = $url;
$parsed = parse_url($x);
$query = $parsed['query'];
parse_str($query, $params);
unset($params['outcode'],$params['checkboxnational']);
$string = http_build_query($params);

然而,今天早上我意识到我的 unset() 看起来太长了,因为实际上我试图取消设置大约 20 个参数并只保留大约 5 个参数。展望未来,我可能会向 URL 添加更多参数,这会增加出错的风险。所以我现在要做的是编写保留这些基本参数的代码,并删除所有其他参数,而不必单独命名所有这些其他参数。这可能吗?

我不介意 php 或 javascript,无论如何。只要它能完成工作。我搜索了高低,我所能找到的只是人们想要删除某些参数,而不是保留某些参数并删除所有其他参数。非常感谢。

如果你想要的参数总是相同的(我的意思是,键是相同的),那么就这样做:

$myWantedParams = array('first' => $params['first'], 'second' => $params['second'] ... );
unset($params);

与其去想如何去除参数,不如专注于你真正需要的东西并接受它。