Вопрос по get, query-string, php – Например:

9

еренаправить пользователя обратно на ту же страницу с существующими строками запроса, но добавить / изменить 1, например «страницу».

Я полагаю, 1 метод:

разобрать$_SERVER['QUERY_STRING'] в массивеслиpage существует в массиве, измените значение, иначе добавьте егоиспользованиеhttp_build_query чтобы получить строку запроса для добавления$_SERVER['PHP_SELF']

но есть ли лучший / более прямой путь?

Ваш Ответ

2   ответа
5

я предложил полезную функцию, которой, как мне казалось, я мог бы поделиться:

  function modQuery($add_to, $rem_from = array(), $clear_all = false){
  if ($clear_all){
     $query_string = array();
  }else{
     parse_str($_SERVER['QUERY_STRING'], $query_string);
  }
  if (!is_array($add_to)){ $add_to = array(); }
  $query_string = array_merge($query_string, $add_to);
  if (!is_array($rem_from)){ $rem_from = array($rem_from); }
  foreach($rem_from as $key){
     unset($query_string[$key]);
  }
  return http_build_query($query_string);
  }

Например:<a href="?<?=modQuery(array('kind'=>'feature'))?>">Feature</a>

23

Просто чтобы убедиться, что вы знаете об этом, используйтеparse_str проанализировать строку запроса:

<?php
parse_str($_SERVER['QUERY_STRING'], $query_string);
$query_string['page'] = basename($_SERVER['PHP_SELF']);
$rdr_str = http_build_query($query_string);
о, я смотрел на это, но пропустил ту часть, где я могу передать массив JM at Work
Примечание. Требуется библиотека PECL pecl_http> = 0.21.0 дляhttp_build_query. Jess Telford
конечно делает вещи проще! Jim Rubenstein

Похожие вопросы