Разрешить URL-адрес в VBScript

#url #vbscript

Вопрос:

Есть ли в VBScript какая-либо функция, которая возвращает абсолютный URL-адрес, когда у нас есть домен, и относительный URL-адрес. Предположим, у меня есть домен example.com/ и относительный путь home/index.html. Когда функции передаются 2 значения, возвращаемый результат должен быть example.com/home/index.html

Например, в Java есть метод разрешения, который выполняет эту работу. И предположим, что мы передаем значения example.com/ и example.com/home/index.html для метода метод возвращает example.com/home/index.html

Комментарии:

1. Это VBScript или классический ASP, использующий VBScript? Потому что если это классический ASP, то ответ совсем другой.

2. Я использую VBScript.

3. Нет, в нем нет ничего, что могло бы анализировать или создавать URL-адрес для вас, но есть много примеров функций, созданных для этого.

4. Не могли бы вы быть любезны и предоставить мне ссылку на пример для того же самого. Я не могу найти правильные ключевые слова во время поиска в Google.

Ответ №1:

Если вы имеете в виду декомпозицию URL — адреса ? вот пример в vbscript :

 Option Explicit
Dim adress,result,Title
Title = "Decomposition of an URL"
'Some examples for testing
'adress = "http://www.laltruiste.com:8080/coursasp/sommaire.html#ancre"
'adress = "ftp://ftp.microsoft.com/softlib/index.txt‎"
'adress = "http://www.google.com"
adress = InputBox( "Please input the http or the https address.", " What makes up a Url ?",_
"http://www.laltruiste.com:8080/coursasp/sommaire.html#ancre")
result = Search(trim(adress))
MsgBox Title amp; " ( Uniform Resource Locator ) ==> URL : " amp; DblQuote(adress) amp; vbCrLf amp; vbCrLf amp; result,64,Title
'*******************************************************
Function Search(MyString)
    Dim objet,correspondance,collection,pattern
    pattern="^" amp; _
        "(w )://([^/:] )" amp; _
        "(:(d ))?" amp; _
        "(" amp; _
            "/" amp; _
            "(" amp; _
                "(" amp; _
                    "([^/] )" amp; _
                    "/" amp; _
                ")?" amp; _
                "(" amp; _
                    "([^#] )" amp; _
                ")?" amp; _
                "(" amp; _
                    "(#(w )?)?" amp; _
                ")?" amp; _
            ")?" amp; _
        ")?" amp; _
    "$"
    
    Set objet = New RegExp
    objet.Pattern = Pattern
    objet.IgnoreCase = True
    objet.Global = True
    if objet.test(MyString) then
        Set collection = objet.Execute(MyString)
        Set correspondance = collection(0)
        
        result = "Protocol = " amp; DblQuote(correspondance.SubMatches(0)) amp; VbCRLF amp; vbCrLf _
        amp; "Domain = " amp; DblQuote(correspondance.SubMatches(1)) amp; VbCRLF amp; vbCrLf _
        amp; "Port = " amp; DblQuote(correspondance.SubMatches(3)) amp; vbCrLf amp; vbCrLf  _ 
        amp; "Folder = " amp; DblQuote(correspondance.SubMatches(7)) amp; VbCRLFamp; vbCrLf  _
        amp; "File = " amp; DblQuote(correspondance.SubMatches(9)) amp; VbCRLFamp; vbCrLf  _ 
        amp; "Anchor = "amp; DblQuote(correspondance.SubMatches(12))
        
        Search = result
    else
        Search = MsgBox("no match ===> no result found !",48,Title)
    end if
End Function
'----------------------------------------------------------------
'Function to add double quotes into a variable
Function DblQuote(Str)
    DblQuote = Chr(34) amp; Str amp; Chr(34)
End Function
'----------------------------------------------------------------
 

Вы также можете очень легко сделать это с помощью PowerShell.

 $uri = "http://www.laltruiste.com:8080/coursasp/sommaire.html#ancre"
[system.uri]$uri
 

И вы можете получить такой результат :

 AbsolutePath   : /coursasp/sommaire.html
AbsoluteUri    : http://www.laltruiste.com:8080/coursasp/sommaire.html#ancre
LocalPath      : /coursasp/sommaire.html
Authority      : www.laltruiste.com:8080
HostNameType   : Dns
IsDefaultPort  : False
IsFile         : False
IsLoopback     : False
PathAndQuery   : /coursasp/sommaire.html
Segments       : {/, coursasp/, sommaire.html}
IsUnc          : False
Host           : www.laltruiste.com
Port           : 8080
Query          :
Fragment       : #anchor
Scheme         : http
OriginalString : http://www.laltruiste.com:8080/coursasp/sommaire.html#ancre
DnsSafeHost    : www.laltruiste.com
IsAbsoluteUri  : True
UserEscaped    : False
UserInfo       :