在经典ASP中添加或替换查询字符串参数

时间:2009-08-03 09:36:51

标签: regex string asp-classic replace

我在header.asp中有一组链接,每个页面都包含这些链接;这些链接的href属性设置为当前页面加上linkID参数。有时链接引用的页面将具有查询字符串参数,但有时则不会。如果当前页面URL包含linkID参数,我需要替换它,否则我需要将其添加到当前URL。

我将Request.ServerVariables(“SCRIPT_NAME”)和Request.ServerVariables(“QUERY_STRING”)连接到变量 pagename 以获取当前页面URL。不幸的是,我使用的是经典的ASP / VBScript。

我认为我需要使用reg ex但不是专家,特别是在经典ASP中。当我需要替换元素时会出现问题,因为linkID参数的值可能会有所不同,因此简单的Replace方法将无效。

1 个答案:

答案 0 :(得分:3)

您可以检查参数是否已经在查询字符串Request.QueryString("linkID") = ""中,如果不存在则直接附加,并使用函数更新值(如果存在)。只要你没有大量参数就可以得到这样的东西,而你不需要大量优化,但是你可能不会使用ASP。

Function updateQueryStringParam(key, value)

  Dim qs, x

  For Each x In Request.QueryString
    qs = qs & x & "="

    If x = key Then
      qs = qs & value & "&"
    Else
      qs = qs & Request.QueryString(x) & "&"
    End If
  Next

  If Len(qs) > 0 Then
    If Right(qs, 1) = "&" Then
      qs = Left(qs, Len(qs)-1)
    End If
  End If

  updateQueryStringParam = qs

End Function

您可以为检查创建另一个函数调用,然后使用上面的函数进行更新;

Function setQueryStringValue(key, value)

  Dim qs

  If Request.QueryString(key) = "" Then
    If Len(qs) > 0 Then
      qs = qs & "&"
    End If
    qs = key & "=" & value
  Else
    qs = updateQueryStringParam(key, value)
  End If

  setQueryStringValue = qs

End Function