$_SERVER[QUERY_STRING] 특정 파라미터 삭제 출력하기

PHP $_SERVER[QUERY_STRING]를 이용하여 GET 방식으로 넘어온 값을 다시 출력 할때 그중 원하는 변수를 제거하고 다시 생성하여 출력한다.

게시판의 페이징시 사용하거나 많은수의 변수들을 주고 받을 경우에 사용하면 유용하다.

class MakeQueryString {
	// 배열로 넘어온 값을 get 형식으로 변경
	function pack($params, $name=null) {
		$ret = "";
		foreach($params as $key=>$val) {
			if(is_array($val)) {
				if($name==null) $ret .= $this->pack($val, $key);
				else $ret .= $this->pack($val, $name."[$key]");   
			} else {
				if($name!=null) $ret .= $name."[]"."=$val&";
				else $ret .= "$key=$val&";
			}
		}

		return $ret;
	}

	// $this->unpack($_SERVER[QUERY_STRING], "제외할 파라미터 복수의 파라미터는 (,)를 구분자로 사용");
	function unpack($querystring, $exception="") {
		$exception = preg_replace("/[\s]+/", "", $exception);
		if($exception) {
			parse_str($querystring, $qs);
			$newqs = Array();
			foreach($qs AS $k => $v) {
				if(array_search($k, preg_split("/,/", $exception)) === false) {
					$newqs[$k] = $v;
				}
			}
			return $this->pack($newqs);
		} else {
			return $querystring;
		}
	}
}

// 예제
// 쿼리스트링 가져오기
$_cls_mkqs = new MakeQueryString();
$get_query_string = $_cls_mkqs->pack($_GET);
$get_query_string = $_cls_mkqs->unpack($get_query_string, "x,y");

테스트를 위한 페이지 : http://blog.munilive.com/ex/php/querystring.php

– 2014-04-04 소스 수정

CC BY-NC-SA 4.0 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.