Trouver une occurence de texte dans HTML

sylvain_pva Messages postés 3 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 16 octobre 2004 - 16 oct. 2004 à 10:21
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 16 oct. 2004 à 18:39
Bonjour à tous,
ça fait un moment que je me creuse la tête sur un probème bien précis...
Je dois identifier une série de mots-clés bien précis dans des fichiers HTML, et si on trouve un des mots, j'ajoute du code autour du mot-clé (le plus souvent, un bête lien).
Le truc pénible c'est que je dois éviter de chercher dans les balises, et donc uniquement la partie textuelle visible dans le browser

Avec le composant mshtml, j'arrive à trouver le texte qu'il faut avec la propriété .innerText, mais pour ensuite ajouter du code HTML je me retrouve coincé...

donc si vous avez des idées, je suis preneur :)

4 réponses

sylvain_pva Messages postés 3 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 16 octobre 2004
16 oct. 2004 à 10:22
petite précision : je bosse sous vb.net, mais à la rigueur je peux me débrouiller pour passer par une appli en vb.6 ;)
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
16 oct. 2004 à 15:43
Généralement, quand une fonction trouve une chaine dans une autre, elle te renvoie l'endroit où se trouve cette chaine.

chaine = "<td>truc</td>"

Si tu recherches "truc" dans chaine , la fonction de recherche que tu utilises devrait te renvoyer 5 (position de "truc" dans chaine)

Dès lors, pour ajouter un lien autour, il faut faire comme ceci :

Soit indice l'endroit où se situe "truc" dans chaine.
nouvelleChaine  = Left(chaine,indice-1) & _
 "[ " & _
 "truc" & _ 
 "]" & _
 Right(chaine,Len(chaine)-(indice+Len("truc"))+1)


Left(chaine,indice-1) est la partie gauche de la chaine de départ, du début jusqu'au caractère juste avant "truc".
Ici, Left(chaine,indice-1) vaut "<td>"

Right(chaine,Len(chaine)-(indice+Len("truc"))+1) est la partie droite de la chaine de départ qui se trouve après le mot "truc". Ici, çà correspond à "</td>"

Au final, nouvelle chaine vaut :
"<td>truc</td>"

J'espère que çà t'aidera.
Bonne prog,

Manu
0
sylvain_pva Messages postés 3 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 16 octobre 2004
16 oct. 2004 à 18:26
merci, mais manipuler une chaine de caractère, je sais faire sans problème ;)

mais si je prends ton exemple, je cherche "truc" dans tout le body de mon fichier html... quand je trouve une occurence avec la fonction instr ou la propriété indexof, rien ne me garantit que "truc" soit bien du texte, et pas le contenu d'une balise (du genre
blablabla/

d'où mon problème...

avec mshtml, et la propriété .innertext des objets IHTMLDocument, j'arrive à trouver les bonnes occurences facilement, mais ensuite je vois pas comment insérer le code html (vu que je doute qu'il y ait correspondance entre les propriétés .innertext et .innerhtml)

bref je sèche...
merci quand même de m'avoir répondu :)
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
16 oct. 2004 à 18:39
effectivement
blablabla/

ferait 'buguer" l'algo.

Je vais repenser "la chose" ... lol

Manu
0
Rejoignez-nous