Extraire une chaine de caractères d'une ligne

Résolu
cmiss16
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006
- 16 oct. 2006 à 12:49
dthuler
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009
- 19 oct. 2006 à 14:53
Bonjour,

Je lis chaque ligne d'un fichier.
Pour chacune de ses lignes j'aimerai extraire url si elle existe ( et seulement elle!)
voici un exemple de ligne
"<td valign="middle" align="center">[http://www.toto.fr/FRANCE">TOTO</td>"

Quelqu'un peut m'aider??

Merci

8 réponses

dthuler
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009

16 oct. 2006 à 13:21
Salut!
Voici une proposition;

Private Function GetHTTPAdresse(Ligne As String) As String
    intDebPosition = InStr(1, Ligne, "http://")
    If intDebPosition > 0 Then
        intFinPosition = InStr(intDebPosition, Ligne, Chr(34))
        GetHTTPAdresse = Mid(Ligne, intDebPosition, intFinPosition - intDebPosition)
    Else
        GetHTTPAdresse = ""
    End If
End Function

Bon code!

David
3
cmiss16
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006

16 oct. 2006 à 13:27
Merci beaucoup
3
cmiss16
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006

19 oct. 2006 à 09:44
Bonjour
De nouveau moi...
Je lis toujours un fichier et pour chaque ligne de ce fichier j'arrive à extraire URL (merci David )

Mais voilà... maintenant dans ma ligne ils existent plusieurs URL...

<td >



["essai>
["essai2>
["essai3>
</td>
Comment toutes les extrairent??

Merci.
0
dthuler
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009

19 oct. 2006 à 10:15
Ton exemple comprends plusieurs lignes...

Cependant il est vrai que la fonction que je t'ai donnée comprends une grosse lacune; il est possible en HTML de mettre plusieurs "Tags" sur une même ligne... la solution complète est dans le même goût. Pour garder la fonction existante, je te propose de la compléter comme suit;

La première fonction dans un module ainsi que la suite:

Public Type monHTTP
Adresses() As String
End Type

Public Function LireToutesLesAdresses(Ligne as String) As monHTTP
Dim DebutTag As Integer, FinTag As Integer, intIndex As Integer
FinTag = 0
intIndex = 0
Do
DebutTag = InStr(FinTag, Ligne, "[)
FinTag = InStr(DebutTag, Ligne, ")
ReDim LireToutesLesAdresses(intIndex)
LireToutesLesAdresses.Adresses(intIndex) = GetHTTPAdresse (Mid(Ligne, DebutTag, Len(Ligne) - DebutTag + 1))
intIndex = intIndex + 1
Loop While DebutTag > 0
End Function

Tu appelles la fonction depuis ton prog par;
Dim MesAdresses As monHTTP
MesAdresses = LireToutesLesAdresses(LigneHTML)

Bon, ok c'est fait à la husse, je l'ai pas testé (pour une fois) mais ça devrait fonctionner.

La fonction LireToutesLesAdresses parcours la ligne et extrait les ] et GetHTTPAdresse lui renvoie l'adresses HTTP... question à 2 francs: Qu'est-ce qu'il se passe si du CSS ou du script vb ou js par exemple se trouve dans le <A HREF ??? A toi de modifier le code en conséquence si besoin

David
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cmiss16
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006

19 oct. 2006 à 11:06
J'ai fait quelques mofifs par rapport  à ce que tu m"as donné...
1) Je n'ai pas un "public type" mais 

Public
Structure monHTTP

Dim Adresses()
As
String

End
Structure

2) A la place de "ReDim LireToutesLesAdresses(intIndex)" j'ai ReDim

LireToutesLesAdresses.Adresses(intIndex)

Je récupère les bonnes RUl qu'il faut à chaque fois mais en faisant le ReDim les adresses de monHTTP s'efface
0
dthuler
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009

19 oct. 2006 à 11:18
Oupsss, rajoute le mot-clé Preserve après ReDim sinon il efface le tableau à chaque fois, désolé.
(j'utilise cette méthode par soucis d'économie de mémoire mais surtout parce que je connais la taille max du tableau à chaque modif, c'est plus pratique!)
0
cmiss16
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006

19 oct. 2006 à 14:06
Tout marche...
Merci David
0
dthuler
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009

19 oct. 2006 à 14:53
Content d'avoir pu t'aider!
David
0