Valide un url et extrait facilement toutes les composantes d'un url

Soyez le premier à donner votre avis sur cette source.

Vue 9 256 fois - Téléchargée 431 fois

Description

Ce code sert:

1- à valider un URL (ftp,ftps,http,https) et

2- pour le cas ou l'URL fourni par l'utilisateur est valide, à extraire toute les composantes de l'URL.

OBJET NÉCESSAIRE

Afin de faire fonctionner et tester rapidement le code source soumis, vous avez simplement besoin des éléments suivants:

Un Textbox devant servir à recevoir l'URL à valider.

Un Textbox ou Label pour chacune des composantes de l'URL que vous désirez voir afficher(Pour les fins du test, je vous conseil de prévoir 9 textbox ou label).

Un Bouton de commande pour lancer le test (Placer le code source soumis sous l'évènement click de ce bouton).

PETITE PROGRAMMATION NÉCESSAIRE

Dans le code source soumis, vous allez voir 9 variables de type string. Afin de voir afficher le contenu de ces variables vous n'avez qu'à associer votre textbox ou label correrspondant, exemple:

MonTextboxUSERNAME.text = MyUserName
MonTextboxPort.text = MyPort

NOTES FINALES

a) Sauf pour la partie Ip adresse ou Host Name, tous les autres composantes de l'URL sont optionneles. Voici des exemples d'URL valides:

187.25.0.89.87
ftp://187.25.0.89.87
http://www.microsoft.com
ftp://username:mon@email.ca@187.25.0.89.87:21/repertoire/fichier.zip

b) Comme certaines composantes sont optionneles, certaines variables n'auront aucun contenus si l'URL soumis n'a pas la valeur correspondante.

Exemple:

ftp://187.25.0.89.87

La variable MyScheme aura ftp comme valeur car un scheme à été soumis, la variable MyIpAddress aura 187.25.0.89.87 comme valeur car une adresse IP à été fournis.

Toutes les autres variables n'auront aucune valeur. Aussi il serait bon de prévoir des valeurs par défaut pour les parties optionneles dans l'URL.

C) Le code distingue entre une adresse Ip valide (entre 0.0.0.0 et 255.255.255.255) et un Host Name et insert la valeur dans la variable MyHostInfo.

exemple1

255.255.255.255

La variable MyHostInfo = 255.255.255.255
La variable MyIpAddress = 255.255.255.255
Pour la variable MyHostName il n'y aura aucune valeur.

exemple2

255.255.255.256 (Ce n'est pas une adresse ip valide mais peut être un Host Name)

La variable MyHostInfo = 255.255.255.256
Pour la variable MyIpAddress il n'y aura aucune valeur.
La variable MyHostName = 255.255.255.256

Source / Exemple :


'A faire par vous: 

' 1- code pour réinitialiser les variables entre chaque test sinon vous risquez d'avoir des variables comportant des valeurs
'      du test précédent.
'
' 2- Prévoir des valeurs par défaut à vos variables.

'3- Est il utile de préciser qu'étant donné que nous utilisons un regex, vous devez vous assurer d'importer la 
'classe Text.RegularExpressions (Imports System.Text.RegularExpressions)

'ATTENTION le Dim r As New Regex apparait originalement sur une seule ligne de code. J'ignore si ici il 
'va apparaitre sur une seule ligne. Sinon, faite les modifications nécessaire si le code apparait sur plusieurs ligne dans votre 
'programme.
Dim r As New Regex("^((?<Scheme>(f|ht)tps?)://)?(?<UserInfo>((?<UserName>[\w\-\@\.]+)\:?((?<Pass>[\w\-\@\.]+))?)\@)?(?<HostInfo>(?<IpAddress>(([01]?\d{1,2}|2[0-4]?\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]?\d|25[0-5]))|(?<HostName>([\w\-]+\.)+([\w\-]{2,3})))(\:(?<Port>(\d)+))?\/?(\/(?<Path>[\w\-\/\.\s]+))?$")

Dim m As Match = r.Match(TextboxUrlAValider.text)

If r.IsMatch(TextboxUrlAValider.text) Then
            Dim MyScheme As String = m.Groups("Scheme").Value
            Dim MyUserInfo As String = m.Groups("UserInfo").Value
            Dim MyUserName As String = m.Groups("UserName").Value
            Dim MyPass As String = m.Groups("Pass").Value
            Dim MyHostInfo As String = m.Groups("HostInfo").Value
            Dim MyIpAddress As String = m.Groups("IpAddress").Value
            Dim MyHostName As String = m.Groups("HostName").Value
            Dim MyPort As String = m.Groups("Port").Value
            Dim MyPath As String = m.Groups("Path").Value

Else
            MsgBox("URL incomplet ou non supporté!", MsgBoxStyle.OKOnly, "Erreur")

End If

Conclusion :


Pour plus de détails concernant ce code, faites en la demande dans vos commentaires.

Merci.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Scalpweb
Messages postés
1468
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
-
Tu aurais dût créer toi même l'interface, ça aurait sûrment motivé plus de gens à regarder ta source...
Sinon, c'est bien joué pour l'expression régulière !
manulegosny
Messages postés
18
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
4 janvier 2009
-
Excellente source. Bravo !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.