возможно, не объяснил это должным образом, но здесь мы идем.
У меня есть URL, который выглядит как http://www.test.co.uk/?page=2&область [] = вещь&площадь [] = thing2
Несколько «областей» могут быть добавлены или удалены из URL через ссылки на сайте. при каждом добавлении n «area» я хотел удалить часть «page» из URL. поэтому его можно сбросить на страницу 1. Я использовал parse_url, чтобы убрать этот бит.
Затем я построил http-запрос, чтобы он мог правильно генерировать 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 — однако я не думаю, что что-то решил, так как понял, что то, что представляет ‘область’ и ‘вещь’, не распознается как $ ключ или $ val в результате того, что я думаю, анализирует или перекодирует URL в соответствии с кодом ниже. Поэтому я все еще не могу удалить «области», используя ссылки
$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: это работает сейчас!
Я не знаю почему, но мне пришлось использовать оригинальный код и внести изменения, которые я делал раньше, и теперь он работает именно так, как я хочу! Тем не менее, я не видел видимых различий в обоих кодах впоследствии. Странный…
Насколько я знаю, нет встроенного способа сделать это.
Вы можете попробовать с:
$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
вызов.
Других решений пока нет …