$_SERVER[QUERY_STRING] 특정 파라미터 삭제 출력하기
Written by munilive on (Updated: )PHP의 $_SERVER[QUERY_STRING]
를 이용하여 Get 방식의 Method 처리를 할 경우 특정 파라미터를 제거하거나 추가해 줘야 하는 경우가 있다.
보통 게시판의 페이징 작업을 할 때 주로 사용되는데, 동일한 Query String 문자열에서 페이징에 해당하는 page 값만 제거하고 다시 붙여넣고 싶을 때 사용하면 좋다.
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");