Extraire une chaine de caractères d'une ligne [Résolu]

Signaler
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006
-
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009
-
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

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

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
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006

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

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.
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009

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
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006

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
Messages postés
121
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
29 avril 2009

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!)
Messages postés
21
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
13 novembre 2006

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

Content d'avoir pu t'aider!
David