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

Résolu
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 - 23 févr. 2006 à 09:30
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 - 23 févr. 2006 à 18:29
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

Mindiell Messages postés 559 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
23 févr. 2006 à 14:42
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à ;)
3
Mindiell Messages postés 559 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
23 févr. 2006 à 10:33
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)
0
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
23 févr. 2006 à 13:50
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);

:-(
0
Mindiell Messages postés 559 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
23 févr. 2006 à 14:18
var reg = new RegExp ('[\+]','gi');

En effet, ca marche mieux comme ca ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
23 févr. 2006 à 14:34
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 ??
0
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
23 févr. 2006 à 18:29
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 ;) )
0