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

DefiniteUrl asp将相对地址转换为绝对地址的代码

程序员文章站 2022-04-14 20:17:01
'================================================== '函数名:definiteurl '作  用:将...
'==================================================
'函数名:definiteurl
'作  用:将相对地址转换为绝对地址
'参  数:primitiveurl ------要转换的相对地址
'参  数:consulturl ------当前网页地址
'==================================================
function definiteurl(byval primitiveurl,byval consulturl)
   dim contemp,pritemp,pi,ci,priarray,conarray
   if primitiveurl="" or consulturl="" or primitiveurl="$false$" or consulturl="$false$" then
      definiteurl="$false$"
      exit function
   end if
   if left(lcase(consulturl),7)<>"http://" then
      consulturl= "http://" & consulturl
   end if
   consulturl=replace(consulturl,"\","/")
   consulturl=replace(consulturl,"://",":\\")
   primitiveurl=replace(primitiveurl,"\","/")

   if right(consulturl,1)<>"/" then
      if instr(consulturl,"/")>0 then
         if instr(right(consulturl,len(consulturl)-instrrev(consulturl,"/")),".")>0 then   
         else
            consulturl=consulturl & "/"
         end if
      else
         consulturl=consulturl & "/"
      end if
   end if
   conarray=split(consulturl,"/")

   if left(lcase(primitiveurl),7) = "http://" then
      definiteurl=replace(primitiveurl,"://",":\\")
   elseif left(primitiveurl,1) = "/" then
      definiteurl=conarray(0) & primitiveurl
   elseif left(primitiveurl,2)="./" then
      primitiveurl=right(primitiveurl,len(primitiveurl)-2)
      if right(consulturl,1)="/" then   
         definiteurl=consulturl & primitiveurl
      else
         definiteurl=left(consulturl,instrrev(consulturl,"/")) & primitiveurl
      end if
   elseif left(primitiveurl,3)="../" then
      do while left(primitiveurl,3)="../"
         primitiveurl=right(primitiveurl,len(primitiveurl)-3)
         pi=pi+1
      loop            
      for ci=0 to (ubound(conarray)-1-pi)
         if definiteurl<>"" then
            definiteurl=definiteurl & "/" & conarray(ci)
         else
            definiteurl=conarray(ci)
         end if
      next
      definiteurl=definiteurl & "/" & primitiveurl
   else
      if instr(primitiveurl,"/")>0 then
         priarray=split(primitiveurl,"/")
         if instr(priarray(0),".")>0 then
            if right(primitiveurl,1)="/" then
               definiteurl="http:\\" & primitiveurl
            else
               if instr(priarray(ubound(priarray)-1),".")>0 then 
                  definiteurl="http:\\" & primitiveurl
               else
                  definiteurl="http:\\" & primitiveurl & "/"
               end if
            end if      
         else
            if right(consulturl,1)="/" then   
               definiteurl=consulturl & primitiveurl
            else
               definiteurl=left(consulturl,instrrev(consulturl,"/")) & primitiveurl
            end if
         end if
      else
         if instr(primitiveurl,".")>0 then
            if right(consulturl,1)="/" then
               if right(lcase(primitiveurl),3)=".cn" or right(lcase(primitiveurl),3)="com" or right(lcase(primitiveurl),3)="net" or right(lcase(primitiveurl),3)="org" then
                  definiteurl="http:\\" & primitiveurl & "/"
               else
                  definiteurl=consulturl & primitiveurl
               end if
            else
               if right(lcase(primitiveurl),3)=".cn" or right(lcase(primitiveurl),3)="com" or right(lcase(primitiveurl),3)="net" or right(lcase(primitiveurl),3)="org" then
                  definiteurl="http:\\" & primitiveurl & "/"
               else
                  definiteurl=left(consulturl,instrrev(consulturl,"/")) & "/" & primitiveurl
               end if
            end if
         else
            if right(consulturl,1)="/" then
               definiteurl=consulturl & primitiveurl & "/"
            else
               definiteurl=left(consulturl,instrrev(consulturl,"/")) & "/" & primitiveurl & "/"
            end if         
         end if
      end if
   end if
   if left(definiteurl,1)="/" then
     definiteurl=right(definiteurl,len(definiteurl)-1)
   end if
   if definiteurl<>"" then
      definiteurl=replace(definiteurl,"//","/")
      definiteurl=replace(definiteurl,":\\","://")
   else
      definiteurl="$false$"
   end if
end function