0

嗨,我正在使用代码来获取推荐 URL,如下所示:

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

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

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

因此,简而言之,通过使用推荐 URL,我想获取 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))

%>
4

3 回答 3

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")
于 2012-04-07T12:27:44.730 回答
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 
于 2012-04-05T14:47:11.367 回答
0

? 之后的所有内容的子串。

按“&”分割

迭代数组以找到“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
于 2012-04-06T19:33:22.460 回答