Получение сведений из URL. Данная функция возвращает различные компоненты web-страницы. Включая "host", "port", "user", "pass", "path" и "query" Private Type typURL 'http://sit:sitter@proxy.spiderit.net:881/prox/proxycfg.php3?openpage Protocol As String 'какой протокол (http://, ftp:// или другой) ServerName As String 'имя сервера (proxy.spiderit.net) Filename As String 'имя страницы (proxycfg.php3) Dir As String 'директория (/prox/) Filepath As String 'путь файла (/prox/proxycfg.php3) Username As String 'имя пользователя (sit) Password As String 'пароль (sitter) Query As String 'строка запроса (openpage) ServerPort As Integer 'порт сервера (881) End Type Const strNOCONTENT As String = "NOCONTENT" Const intDEFAULTPORT As Integer = 80 Private Function ParseURL(URL As String) As typURL Dim strTemp As String Dim strServerAuth As String Dim strServerNPort As String Dim strAuth As String strTemp = URL 'Parse protocol If (InStr(1, strTemp, "://") > 0) Then 'URL contains protocol ParseURL.Protocol = Left(strTemp, InStr(1, strTemp, "://") - 1) strTemp = Right(strTemp, Len(strTemp) - (Len(ParseURL.Protocol) + 3)) 'delete protocol + :// Else 'URL do not contains the protocol ParseURL.Protocol = strNOCONTENT End If '- Parse authenticate information If (InStr(1, strTemp, "/") > 0) Then 'extract servername and user and password if there are directory infos strServerAuth = Left(strTemp, InStr(1, strTemp, "/") - 1) strTemp = Right(strTemp, Len(strTemp) - (Len(strServerAuth) + 1)) Else 'extract servername and user and password if there are no directory infos strServerAuth = strTemp strTemp = "/" End If If (InStr(1, strServerAuth, "@") > 0) Then 'there are user and password informations strAuth = Left(strServerAuth, InStr(1, strServerAuth, "@") - 1) strServerNPort = Right(strServerAuth, Len(strServerAuth) - (Len(strAuth) + 1)) Else 'there are no user and password informations strAuth = "" strServerNPort = strServerAuth End If If (InStr(1, strAuth, ":") > 0) And (Len(strAuth) > 0) Then 'split username and password on ":" splitter ParseURL.Username = Left(strAuth, InStr(1, strAuth, ":") - 1) ParseURL.Password = Right(strAuth, Len(strAuth) - InStr(1, strAuth, ":")) ElseIf (InStr(1, strAuth, ":") <> 0) Then 'only username was submitted ParseURL.Username = strAuth ParseURL.Password = strNOCONTENT Else 'no authenticate information was submitted ParseURL.Username = strNOCONTENT ParseURL.Password = strNOCONTENT End If If (InStr(1, strServerNPort, ":") > 0) Then 'Servername contains port ParseURL.ServerPort = Int(Right(strServerNPort, Len(strServerNPort) - InStr(1, strServerNPort, ":"))) ParseURL.ServerName = Left(strServerNPort, InStr(1, strServerNPort, ":") - 1) Else ParseURL.ServerPort = intDEFAULTPORT ParseURL.ServerName = strServerNPort End If If (InStr(1, strTemp, "?") > 0) Then ParseURL.Query = Right(strTemp, Len(strTemp) - InStr(1, strTemp, "?")) strTemp = Left(strTemp, InStr(1, strTemp, "?") - 1) Else ParseURL.Query = strNOCONTENT End If For i = Len(strTemp) To 1 Step -1 If (Mid(strTemp, i, 1) = "/") Then ParseURL.Filename = Right(strTemp, Len(strTemp) - i) ParseURL.Dir = Left(strTemp, i) If Not (Left(ParseURL.Dir, 1) = "/") Then ParseURL.Dir = "/" & ParseURL.Dir End If Exit For End If Next ParseURL.Filepath = "/" & strTemp If Not (Left(ParseURL.Filepath, 1) = "/") Then ParseURL.Filepath = "/" & ParseURL.Filepath End If End Function Private Sub Form_Load() 'Const strURL As String = "http://visualprogs.narod.ru/index.html" Const strURL As String = "http://sit:sitter@proxy.spiderit.net:881/prox/proxycfg.php3?openpage" msgtext = ParseURL(strURL).Protocol & vbCrLf msgtext = msgtext & ParseURL(strURL).Username & vbCrLf msgtext = msgtext & ParseURL(strURL).Password & vbCrLf msgtext = msgtext & ParseURL(strURL).ServerName & vbCrLf msgtext = msgtext & ParseURL(strURL).ServerPort & vbCrLf msgtext = msgtext & ParseURL(strURL).Filepath & vbCrLf msgtext = msgtext & ParseURL(strURL).Dir & vbCrLf msgtext = msgtext & ParseURL(strURL).Filename & vbCrLf msgtext = msgtext & ParseURL(strURL).Query & vbCrLf MsgBox msgtext, vbInformation End Sub