ASP从引用网址中获取两个参数

时间:2012-04-05 07:44:35

标签: asp-classic vbscript

您好我正在使用代码获取引荐网址,如下所示:

sRef = encode(Request.ServerVariables("HTTP_REFERER"))

上面的代码获取以下网址: http://www.rzammit.com/pages/linux-form.asp?adv=101&loc=349&websync=233344-4555665-454&ptu=454545

从那个网址我想只抓取ADV和LOC(Request.querystring不起作用,因为这是一个在提交表单时运行的脚本)

因此,为了简化故事,使用引荐网址,我想获得adv和loc参数的值。

有关我如何做到这一点的任何帮助吗?

以下是我目前正在使用的代码,但我遇到了问题。在loc之后的参数也显示出来。我想要一些动态的东西adv和loc的值也可以更长。

    <%
sRef = Request.ServerVariables("HTTP_REFERER")

a=instr(sRef, "adv")+4
b=instr(sRef, "&loc")

response.write(mid(sRef ,a,b-a))
response.write("<br>")
response.write(mid(sRef ,b+5))

%>

3 个答案:

答案 0 :(得分:0)

这是让你入门的东西;它使用正则表达式为您获取所有URL变量。您可以使用split()函数将它们拆分为“=”符号并获取一个简单的数组,或将它们放在字典或其他内容中。

    Dim fieldcontent : fieldcontent = "http://www.rzammit.com/pages/linux-form.asp?adv=101&loc=349&websync=233344-4555665-454&ptu=454545"
    Dim regEx, Matches, Item
    Set regEx = New RegExp
        regEx.IgnoreCase = True
        regEx.Global = True
        regEx.MultiLine = False

        regEx.Pattern = "(\?|&)([a-zA-Z0-9]+)=([^&])"

        Set Matches  = regEx.Execute(fieldcontent)
        For Each Item in Matches
            response.write(Item.Value & "<br/>")
        Next

    Set regEx = Nothing 

答案 1 :(得分:0)

在?之后的所有内容。

拆分“&amp;”

迭代数组以找到“adv =”和“loc =”

以下是代码:

Dim fieldcontent 
fieldcontent = "http://www.rzammit.com/pages/linux-form.asp?adv=101&loc=349&websync=233344-4555665-454&ptu=454545"
fieldcontent = mid(fieldcontent,instr(fieldcontent,"?")+1)
Dim params
 params = Split(fieldcontent,"&")
for i = 0 to ubound(params) + 1
    if instr(params(i),"adv=")>0 then
        advvalue = mid(params(i),len("adv=")+1)
    end if
    if instr(params(i),"loc=")>0 then
       locvalue = mid(params(i),5)
    end if
next

答案 2 :(得分:0)

您可以使用以下通用功能:

function getQueryStringValueFromUrl(url, key)
    dim queryString, queryArray, i, value

    ' check if a querystring is present
    if not inStr(url, "?") > 0 then
        getQueryStringValueFromUrl = empty
    end if

    ' extract the querystring part from the url
    queryString = mid(url, inStr(url, "?") + 1)

    ' split the querystring into key/value pairs
    queryArray = split(queryString, "&")

    ' see if the key is present in the pairs
    for i = 0 to uBound(queryArray)
        if inStr(queryArray(i), key) = 1 then
            value = mid(queryArray(i), len(key) + 2)
        end if
    next

    ' return the value or empty if not found
    getQueryStringValueFromUrl = value
end function

在你的情况下:

dim url
url = "http://www.rzammit.com/pages/linux-form.asp?adv=101&loc=349&websync=233344-4555665-454&ptu=454545"

response.write "ADV = " & getQueryStringValueFromUrl(url, "adv") & "<br />"
response.write "LOC = " & getQueryStringValueFromUrl(url, "loc")