可能没有正确解释这一点,但我们走了。
我的网址看起来像http://www.test.co.uk/?page=2&area[]=thing&area[]=thing2
可以通过网站上的链接从URL添加或删除多个“区域”。在每次添加n“区域”时,我想删除URL的“页面”部分。所以它可以重置为page1。我使用parse_url取出那个位。
然后我构建了一个http查询,这样就可以在没有“page”的情况下正确生成URL
这导致“area%5B0%5D =”“area%5B1%5D =”而不是“area [] =”
当我使用urldecode时,现在显示“area [0] =”和“area [1] =”
我需要它是“[]”,因为当使用链接删除某个区域时,它会检查“[] =” - 当它为[0]时它无法识别它。如何将其保留为“[] =”?
见下面的代码。
$currentURL = currentURL();
$parts = parse_url($currentURL);
parse_str($parts['query'], $query);
unset($query['page']);
$currenturlfinal = http_build_query($query);
urldecode($currenturlfinal);
$currentURL = "?" . urldecode($currenturlfinal);
这就是我到目前为止所做的 - 它修复了URL中的视觉部分 - 但我认为我没有解决任何问题,因为我意识到代表'area'和'thing'的东西不是根据我认为根据下面的代码解析或重新编码url,我认为是$ key或$ val。所以我仍然无法使用链接删除“区域”
$currentURL_with_QS2 = currentURL();
$parts = parse_url($currentURL_with_QS2);
parse_str($parts['query'], $query);
unset($query['page']);
$currenturlfinal = http_build_query($query);
$currenturlfinal = preg_replace('/%5B[0-9]+%5D/simU', '[]', $currenturlfinal);
urldecode($currenturlfinal);
$currentURL_with_QS = "?" . $currenturlfinal;
$numQueries = count(explode('&', $_SERVER['QUERY_STRING']));
$get = $_GET;
if (activeCat($val)) { // if this category is already set
$searchString = $key . '[]= ' . $val; // we build the query string to remove
我正在使用Wordpress,我可以添加 - 也许有一种方法可以通过Wordpress重置分页。当然,即便如此 - 当我在任何页面上转到第2页时,它仍将“[]”更改为“5b0%5d”等....
编辑:这是一个函数的一部分,它引用了$ key(区域/类别)和$ val(区域或类别的名称),它在链接本身中被回显
EDIT2:现在有效!
我不知道为什么,但我不得不使用原始代码并进行我之前做过的调整,现在它的工作方式正是我想要的!然而,之后我看不出两个代码中有任何明显的差异。奇怪...
答案 0 :(得分:0)
据我所知,没有内置的方法可以做到这一点。 您可以尝试:
$currenturlfinal = http_build_query($query);
其中$query
是没有区域参数的查询字符串部分,然后是:
foreach ($areas as $area) {
$currenturlfinal .= '&area[]='.$area;
}
UPD:
你可以试试:
$query = preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $query);
在http_build_query
致电后立即放置。