Прекрасный способ удалить GET-переменные с помощью PHP? - PullRequest
83 голосов
/ 09 августа 2009

У меня есть строка с полным URL, включая переменные GET. Какой лучший способ удалить переменные GET? Есть ли хороший способ удалить только один из них?

Это код, который работает, но не очень красивый (я думаю):

$current_url = explode('?', $current_url);
echo $current_url[0];

Приведенный выше код просто удаляет все переменные GET. В моем случае URL создается из CMS, поэтому мне не нужна информация о серверных переменных.

Ответы [ 11 ]

0 голосов
/ 09 августа 2009

Как насчет функции, которая переписывает строку запроса, просматривая массив $ _GET

! Грубый набросок подходящей функции

function query_string_exclude($exclude, $subject = $_GET, $array_prefix=''){
   $query_params = array;
   foreach($subject as $key=>$var){
      if(!in_array($key,$exclude)){
         if(is_array($var)){ //recursive call into sub array
            $query_params[]  = query_string_exclude($exclude, $var, $array_prefix.'['.$key.']');
         }else{
            $query_params[] = (!empty($array_prefix)?$array_prefix.'['.$key.']':$key).'='.$var;
         }
      }
   }

   return implode('&',$query_params);
}

Что-то вроде этого было бы хорошо, чтобы было удобно использовать ссылки для нумерации страниц и т. Д.

<a href="?p=3&<?= query_string_exclude(array('p')) ?>" title="Click for page 3">Page 3</a>
...