欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

FormatRemoteUrl函数之asp实现格式化成当前网站完整的URL-将相对地址转换为绝对地址的代码

程序员文章站 2022-08-06 09:08:25
'================================================ '函数名:formatremoteurl '作  用...
'================================================
'函数名:formatremoteurl
'作  用:格式化成当前网站完整的url-将相对地址转换为绝对地址
'参  数: url ----url字符串
'参  数: currenturl ----当然网站url
'返回值:格式化取后的url
'================================================
    public function formatremoteurl(byval url,byval currenturl)
        dim strurl
        if len(url) < 2 or len(url) > 255 or len(currenturl) < 2 then
            formatremoteurl = vbnullstring
            exit function
        end if
        currenturl = trim(replace(replace(replace(replace(replace(currenturl, "'", vbnullstring), """", vbnullstring), vbnewline, vbnullstring), "\", "/"), "|", vbnullstring))
        url = trim(replace(replace(replace(replace(replace(url, "'", vbnullstring), """", vbnullstring), vbnewline, vbnullstring), "\", "/"), "|", vbnullstring))    
        if instr(9, currenturl, "/") = 0 then
            strurl = currenturl
        else
            strurl = left(currenturl, instr(9, currenturl, "/") - 1)
        end if

        if strurl = vbnullstring then strurl = currenturl
        select case left(lcase(url), 6)
            case "http:/", "https:", "ftp://", "rtsp:/", "mms://"
                formatremoteurl = url
                exit function
        end select

        if left(url, 1) = "/" then
            formatremoteurl = strurl & url
            exit function
        end if

        if left(url, 3) = "../" then
            dim arrayurl
            dim arraycurrenturl
            dim arraytemp()
            dim strtemp
            dim i, n
            dim c, l
            n = 0
            arraycurrenturl = split(currenturl, "/")
            arrayurl = split(url, "../")
            c = ubound(arraycurrenturl)
            l = ubound(arrayurl) + 1

            if c > l + 2 then
                for i = 0 to c - l
                    redim preserve arraytemp(n)
                    arraytemp(n) = arraycurrenturl(i)
                    n = n + 1
                next
                strtemp = join(arraytemp, "/")
            else
                strtemp = strurl
            end if
            url = replace(url, "../", vbnullstring)
            formatremoteurl = strtemp & "/" & url
            exit function
        end if
        strurl = left(currenturl, instrrev(currenturl, "/"))
        formatremoteurl = strurl & replace(url, "./", vbnullstring)
        exit function
    end function