> Hello World !!!

     

@syaku

GET 파라메타 쿼리문자열(QueryString) 컨트롤 : ASP

 

Request 객체를 사용하여 get으로 받은 파라메터 쿼리문자열을 컨트롤하는 함수이다.
ASP Request.ServerVariables("QUERY_STRING") 객체사용.

 

Source

<%@LANGUAGE="VBSCRIPT"%>
<% Option Explicit %>
<%
'// programmed by 최석균
'// http://www.cyworld.com/syaku
'// http://syaku.tistory.com

Public Function GetParam(params)
    Dim query : query = Request.ServerVariables("QUERY_STRING")
    Dim Dic : Set Dic = Server.CreateObject("Scripting.Dictionary")
    Dim Reg : Set Reg = New RegExp
    Reg.Global = True
    Reg.Pattern = "^\?"
    query = Reg.Replace(query,"")
    Reg.Pattern = "^(.*)=(.*)$"
 
    ' 기존 파라메터 담기
    If Me.xIsNull(query) = False Then
      Dim obj_key,obj_name,obj_value    
    
      For Each obj_key In Split(query,"&")
      
        If Reg.Test(obj_key) = True Then
          obj_name = Reg.Replace(obj_key,"$1")
          obj_value = Reg.Replace(obj_key,"$2")
          Dic.Add obj_name,obj_value
        End If      
      Next
    End If
  
    ' 임의의 파라메터 담기
    If Me.xIsNull(params) = False Then
      Dim new_key,new_name,new_value    
      For Each new_key In Split(params,"&")
      
        If Reg.Test(new_key) = True Then
          new_name = Reg.Replace(new_key,"$1")
          new_value = Reg.Replace(new_key,"$2")
        
          If Dic.Exists(new_name) = True Then
            If Me.xIsNull(new_value) = True Then
              Dic.Remove(new_name)
            Else        
              Dic.Key(new_name) = new_value
            End If          
          Else        
            Dic.Add new_name,new_value
          End If
        
        End If      
      Next
    
    End If
  
    Dim params_ext : params_ext = ""
    Dim acc_key,acc_name,acc_value
    For Each acc_key in Dic.Keys
      acc_name = acc_key
      acc_value = Dic.item(acc_name)
      If Me.xIsNull(acc_value) = False Then
        params_ext = params_ext & acc_name & "=" & acc_value & "&"
      End If    
    Next
    If Me.xIsNull(params_ext) = False Then  
      Reg.Pattern = "&$"
      GetParam = Reg.Replace(params_ext,"")
    Else
      GetParam = ""
    End If
      
  End Function
 %>

Example Source

<%
' 현 파라메터 정보
' chn=syaku&mode=blog&search=&page=1
 
' 현 파라메터 출력
Response.Write FuncCls.GetParam("") & "<br />"
' 결과 : chn=syaku&mode=blog&search=&page=1
 
' chn=secon 변경하기
Response.Write FuncCls.GetParam("chn=secon") & "<br />"
' 결과 : chn=secon&mode=blog&page=1 : &search= 값이 없기 때문에 자동 제거 됨.
 
' page 파라메터 삭제하기
Response.Write FuncCls.GetParam("page=") & "<br />"
' 결과 : chn=secon&mode=blog
 
' page=2 를 추가하고, mode=home 변경하며, chn 파라메터는 삭제하기.
Response.Write FuncCls.GetParam("chn=&mode=home&page=2") & "<br />"
' 결과 : mode=home&page=2
%>

written by Seok Kyun. Choi. 최석균.
http://www.cyworld.com/syaku
http://syaku.tistory.com