#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 :