Visual Basic World - Programmierung und BeispieleVisual Basic World - Tipps und TutorialsVisual Basic World - Source-Code und Forum

<leer>

Tipp 052: URL in einzelne Bestandteile zerlegen [splitten]

Autor: Alexander Kopatz   VB-Version: Visual Basic 6.0   Download: Beispielprojekt Tipp-052

Beschreibung

Die Abkürzung URL steht für Uniform Resource Locator, was so viel bedeutet wie einheitlicher Quellenanzeiger. Per URL lassen sich auf standardisierte Art und Weise Dokumente und Webseiten im Internet beschreiben und identifizieren. Hierbei kann die Erscheinungsform einer URL auf den ersten Blick sehr unterschiedlich anmuten, etwa:

http://visualbasicworld.de

verglichen mit:

http://www.visualbasicworld.de/download/tipps-und-tricks/vbw-tipp-052.zip

Beide Angaben beschreiben gültige Internetadressen. Dies macht die Programmierung bisweilen kompliziert, wenn ein Programm verschiedentliche Angaben gleichartig verarbeiten soll. Hilfreich ist hier ein Blick auf die Struktur eines Uniform Resource Locator, dieser ist - wie der Name schon sagt - immer gleich:

http://peter:vertraulich@visualbasicworld.de:80/pfad1/datei.cgi?sprache=de&kategorie=vb#anfang
|      |     |           |                   | |                |                       |
|      |     |           Host                | Pfad             Query                   Fragment
|      |     Passwort                        Port
|      Benutzer
Protokoll
Einige der Angeben sind jedoch Optional. So muss nicht jede URL einen Benutzer oder ein Passwort enthalten. In der Praxis ist es daher hilfreich eine URL in Ihre einzelnen Bestandteile zu zerlegen und sodann mit diesen einzeln weiter zu verfahren.  Der nächstliegende Gedanke wäre es nun freilich eine händische Implementierung umzusetzen, dies ist meist jedoch nicht erforderlich. So stellt uns dankenswerterweise die wininet.dll die Funktion InternetCrackUrl zur Verfügung. Diese erledigt die Gewünschte Aufgabe und verwandelt unsere sperrige Internetadresse in handliche Stückchen, welche Sich gut einheitlich weiterverarbeiten lassen. Dieser Tipp zeigt die genaue Verwendung.

Hinweis: Es sei jedoch angemerkt, dass die InternetCrackUrl-Funktion nicht zu jeder noch so komplizierten URL immer die ideale Antwort parat hat. Dies gilt insbesondere dann, wenn die eingehenden URLs nicht durchgängig standardkonform formatiert sind. Dies kann etwa beim Aufgreifen der Dateinamen mittels Webcrawler der Fall sein. Hier empfiehlt sich die Ergänzung einer selbstgeschriebene Implementierung die auch mit unvorhersehbaren Ungereimtheiten umzugehen vermag.

Quellcode

frmURLSplit
CommandButton            cmdSplit
Form                     frmURLSplit
Frame                    fraBorder
Frame                    fraURLToSplit
Label                    Label1
Label                    Label2
Label                    Label3
Label                    Label4
Label                    Label5
Label                    lblDatei
Label                    lblExtraInfo
Label                    lblHostName
Label                    lblSektion
Label                    lblURL
' VISUAL BASIC WORLD
' ===========================================
' Das große Portal zum Thema Visual Basic.
'
' Wenn Ihnen dieser Source Code gefallen hat,
' dann empfehlen Sie Visual Basic World bitte
' weiter und/oder setzen Sie einen Link auf:
'
' http://www.visualbasicworld.de/
'
' Vernetzen Sie sich mit uns:
'
' http://twitter.com/visualbasicwrld

Option Explicit Private Declare Function InternetCrackUrl Lib "wininet.dll" Alias _ "InternetCrackUrlA" (ByVal lpszUrl As String, ByVal dwUrlLength As Long, _ ByVal dwFlags As Long, lpUrlComponents As URL_COMPONENTS) As Long Private Type URL_COMPONENTS dwStructSize As Long lpszScheme As String dwSchemeLength As Long nScheme As Long lpszHostName As String dwHostNameLength As Long nPort As Long lpszUserName As String dwUserNameLength As Long lpszPassword As String dwPasswordLength As Long lpszUrlPath As String dwUrlPathLength As Long lpszExtraInfo As String dwExtraInfoLength As Long End Type Private lngPort As Long Private strHostName As String Private strUrlPath As String Private strExtraInfo As String Private strSektion As String Private strDatei As String
Public Sub SplitURL(ByVal strInternetURL As String) Dim lngRetVal As Long Dim lngZähler As Long Dim URL As URL_COMPONENTS strHostName = Space$(1024) strUrlPath = Space$(1024) strExtraInfo = Space$(1024) 'Die Variablen werden mit Leerraum initalisiert. With URL .dwStructSize = Len(URL) .nScheme = 3 .lpszHostName = strHostName .dwHostNameLength = Len(strHostName) .nPort = lngPort .lpszUrlPath = strUrlPath .dwUrlPathLength = Len(strUrlPath) .lpszExtraInfo = strExtraInfo .dwExtraInfoLength = Len(strExtraInfo) End With lngRetVal = InternetCrackUrl(strInternetURL, Len(strInternetURL), 0&, URL) 'Die Funktion splittet die angegebene URL in ihre Bestandteile auf. With URL If lngRetVal <> 0 Then strHostName = Left$(.lpszHostName, .dwHostNameLength) strUrlPath = Left$(.lpszUrlPath, .dwUrlPathLength) strExtraInfo = Left$(.lpszExtraInfo, .dwExtraInfoLength) lngPort = .nPort For lngZähler = Len(strUrlPath) To 1 Step -1 If Mid(strUrlPath, lngZähler, 1) = "/" Then strSektion = Left(strUrlPath, lngZähler) strDatei = Mid(strUrlPath, lngZähler + 1) Exit For End If Next Else strHostName = "" End If End With End Sub
Private Sub cmdSplit_Click() SplitURL txtURL.Text lblURL.Caption = txtURL.Text lblHostName.Caption = strHostName lblSektion.Caption = strSektion lblDatei.Caption = strDatei lblExtraInfo = strExtraInfo End Sub

<leer> Aktuelle Seite Back To Top
Druckansicht | Feedback | Favoriten
Copyright © Visual Basic World, 2000-2022 | Kontakt | Impressum

Visual Basic World @ Twitter

Folgen Sie Visual Basic World!

Visual Basic World @ Twitter
Wenn Ihnen Visual Basic World gefällt, dann folgen Sie uns doch bei Twitter (@visualbasicwrld).
Vielen Dank!