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
Rejoignez-nous