쿼리 스트링 파싱.

//============================================================================
// 쿼리 스트링 파싱.
// ?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}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
4.28
4.29
4.30
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.11
5.12
5.13
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
5.29
5.30
5.31
6.1