Recherche présence adresse web ou email dans texte

jfm_ Messages postés 5 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 9 janvier 2004 - 9 janv. 2004 à 02:28
jfm_ Messages postés 5 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 9 janvier 2004 - 9 janv. 2004 à 05:48
Bonjour,

Je dois vérifier dans ma page si le texte fourni dans un formulaire contient une ou des adresses de courriels et internet et dans ce cas, remplacer ces adresses par des caractères *****.

Je pensais chercher par exemple un @ et un . pour voir si ce mot correspondant à un adresse email avec la fonction instr. et www ou http:// pour un adresse web.

Ma petite interrogation actuelle consiste au fait qu'avec cette fonction simplement, ca chercherait partout dans le texte si il y a @ ou . dans le cas des emails même si ces 2 caractères sont dans 2 mots différents. Moi biensûr ce qui m'intéresse c'est si ces 2 caractères apparraissent dans le même mot (entre des espaces ou début ou fin de texte). et ensuite tout remplacer ce mot par mes ****.

quelle est la meilleure méthode pour m'y prendre? dois-je découper tout le texte en mot et mettre ça dans un tableau par exemple et ensuite vérifier chaque mot et réassembler le texte? Si oui je peux utiliser quelle fonction?

Merci de bien vouloir m'éclairer et me mettre sur une piste.

4 réponses

jfm_ Messages postés 5 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 9 janvier 2004
9 janv. 2004 à 04:35
Je me suis essayé, peut-être que je me suis compliqué la vie pour rien.

Mais j'ai toujours un erreur. Mon code vérifie bien chaque mot de la phrase et est capable de trouver le ou les mots que je veux remplacer.

voici mon code :

<% function filtrerAdresse (mot)
if ((instr(1,mot,"http://",0) <> 0) OR (instr(1,mot,"www.",0) <> 0)) then
mot = replace(Space(len(mot)), " ", "*")
response.write(" ----->filtrage!
")
elseif ((instr(1,mot,"@",0) <> 0) AND (instr(1,mot,".",0) <> 0)) then
mot = replace(Splace(len(mot)), " ", "*")
response.write(" ----->filtrage!
")
else
response.write(" ----->mot OK
")
end if
filtrerAdresse = mot
end function

function filtrer(texte)
dim nCurseur1, nCurseur2, chaine, nouvText
nCurseur1 = 1
nCurseur2 = 1

while (nCurseur2 <= len(texte))
while ((Mid(texte,nCurseur2,1) <> " ") AND (nCurseur2 <> len(texte)))
nCurseur2 = nCurseur2 + 1
wend
chaine = MID(texte, nCurseur1, nCurseur2)
response.write("mot à vérifier: "&chaine&"")
nouvText = filtrerAdresse(chaine)

replace texte, chaine, nouvText
nCurseur2 = nCurseur2 + 1
nCurseur1 = nCurseur2
wend
filtrer = texte
end function

dim phrase
phrase = "salut www.rds.ca bye"
response.write("

" & filtrer(phrase))

%>

Donc ici on veut trier la chaine "salut www.rds.ca bye"
je m'attends avec le response.write de la fin à obtenir : "salut ********** bye"

ce qui n'est pas le cas, j'obtiens la même chaine du début.

pourtant à l'exécution de mon code avec les response.write, ca me donne ceci :
mot à vérifier: salut ----->mot OK
mot à vérifier: www.rds.ca bye ----->filtrage!
mot à vérifier: bye ----->mot OK

donc il trouve comme il faut l'expression à remplacer. J'avais ajouté précédemment d'autres response. la fonction filtrerAdresse retourne comme il faut le *********** que je compte obtenir.

c'est la ligne "replace texte, chaine, nouvText" qui semble faire défaut. c'est elle qui ne veut pas insérer mes ********** à la place. on dirait qu'il n'est pas capable de faire la vérification de la variable chaine.

car j'ai fait le même test en mettant seulement "www.rds.ca" comme phrase dans l'exécution de mon code et ca ne fonctionne toujours pas. J'ai fait une comparaison entre texte (qui vaut "www.rds.ca") et chaine (qui vaut aussi "www.rds.ca"), et ca me dit que les 2 termes ne sont pas identique. Pourtant je les affiche à l'écran et vérifie le nombre de caractères et c'est tout identique.

quelqu'un peut m'aider?
0
jfm_ Messages postés 5 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 9 janvier 2004
9 janv. 2004 à 04:40
Oh il est tard, je viens de remarquer quelques choses dans mon code :

j'ai mis :
texte = replace(texte, chaine, nouvText)
au lieu de :
replace texte, chaine, nouvText

mais ca me donne toujours la même chose.
pourquoi le replace ne veut pas se faire!
0
jfm_ Messages postés 5 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 9 janvier 2004
9 janv. 2004 à 05:03
si je reprends :
texte = replace(texte, chaine, nouvText)

et que je remplace la variable chaine par la valeur directement, ça fonctionne.

pourtant j'écris dans le code exactement la même chose que la variable chaine imprime à l'écran.
0
jfm_ Messages postés 5 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 9 janvier 2004
9 janv. 2004 à 05:48
Finalement après une pause de 2min, j'ai trouvé.
au lieu de passer par la variable nommé chaine, j'ai mis le MID(....) directement au 2 endroits où javais la variable chaine qui était appelé et ca marche nickel.

merci quand même.
0
Rejoignez-nous