Problème avec une expression régulière et un tableau

[Résolu]
Signaler
Messages postés
197
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 avril 2009
-
Messages postés
197
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 avril 2009
-
Salut a tous , je bosse actuellement sur un chat en ajax/php et je suis confronté au problème des caractères spéciaux lors de l'envois par la méthode ajax.

je dois donc avant d'envoyer certain caractère comme le & le # ou encore le + les remplacer pour qu'il puissent etre transmis jusque la pas trop de souçis ( je ermet tout dans le contexte :) ).

la ou le bas blesse c'est que certain de ces caractères ne passe pas dans la fonction reg code source :

function pre_traitement(){
// récupération de la valeur du champs texte
message = document.getElementById('lemessage').value;
//traitement des caractère spéciaux
var avant = new Array("&","+","#");
var apres = new Array(":amp:",":plus:",":diese:");
// boucle tant qu'il y a des caratère spéciaux on traite la chaine
for (i =0; i<3; i++) {
message = Remplace(message,avant[i],apres[i]);
}
}

et la fonction de traitement :

function Remplace(str,find,rep){
var reg = new RegExp(find,"gi")
return(str.replace(reg,rep));
}

les caractères & et # aucun souçis mais le + me plante ainsi que le \ ( enevé du tableau ... )

en espérant avoir un pti coup de main.

coordialement

6 réponses

Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Facile, dans une chaine de caractères en javascript, les \\ sont tout de suite transformés en \, donc tu as un souci. Il faut donc doubler le double ^^

'[\\\\]'

et voilà ;)
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
le + est un caractère spécial des expressions régulières qui signifie un caractère ou plus...
remplace le par "\+"

pour "", c'est un carctère spécial aussi, remplace le par "\". Il permet de ne pas tenir compte d'un caractère spécial derrière lui ;o)
Messages postés
197
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 avril 2009
2
déja testé mais marche pas, réponse de firefox :
Erreur : invalid quantifier +
var message = "+ et la +"
var reg = new RegExp("\+","gi");
message = message.replace(reg,rep);

:-(
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
var reg = new RegExp ('[\+]','gi');

En effet, ca marche mieux comme ca ^^
Messages postés
197
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 avril 2009
2
ou c que tu les veux tes bizouxxx ???
allez un dernier caractère et je pense que c'est finit :
'[\\]' pour l'anti slash qui plante , une idée ??
Messages postés
197
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 avril 2009
2
réponse accepté a 200% lol merci a toi ;) j'étais confronté a un autre problème mais résolut ...
a très bientot ( enfin j'espère po ;) )