쿼리 스트링 파싱.

//============================================================================
// 쿼리 스트링 파싱.
// ?abc=123&eee=444
// -> obj['abc']= '123';obj['eee']= '444';
//============================================================================
function js_search_to_object(str){
 if(str){
  var t = str.substr(0,1)
  if(t=='?' ||t=='&') var qy = str.substr(1);
  else var qy = str;
 }else{ var qy = document.location.search.substr(1);
 }
 var obj = new Object();
 var t = qy.split('&');
 var tt = Array();
 for(var i=0,m=t.length;i<m;i++){
  var ts = t[i].indexOf('=');
  if(ts!=-1){ tt = Array(t[i].substr(0,ts),t[i].substr((ts+1))); }
  else{ tt = Array(t[i],null);}
  if(/[^\[]*\[[^\]]*\]$/.test(tt[0])){
   var tn =  tt[0].match(/([^\[]*)\[([^\]]*)\]$/);
   var tk = tn[1];tv = tn[2];
   if(tv==''){ //a[]=x  형식 처리
    if(obj[tk]==null){obj[tk]= new Array();}
    obj[tk].push(decodeURI(tt[1]));
   }else{ //a[x]=y 형 처리
    if(obj[tk]==null){obj[tk]= new Object();}
    obj[tk][tv] = decodeURI(tt[1]);
   }
  }else{
   if(tt[0].length>1) obj[tt[0]] = decodeURI(tt[1]);
  }
 }
 //for(x in obj){alert(x+' = '+obj[x]);} //debug
 return obj;
}


원리 설명
?xxx=yyy&aaa=bbb 는 document.location.search 에 들어있는 값
이 값을 가져와서 ?를 빼내고
&로 split(배열로 자르기)를 하고
각 배열의 형식은
aaa=bbb 형식이므로 이배열을 loop 돌려서 다시 =로 split
한 후 배열의 [0]을 key값으로 값고 [1]은 value값으로 잡아서
object에 저장
그 object를 리턴
사용시 연관배열로 생각하고 사용하면 됨.


사용제약은 언제나의 그거.

댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자