IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

addslashes / stripslashes en javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 76
    Par défaut addslashes / stripslashes en javascript
    Bonjour,

    Je me prend la tête depuis deux jours a essayer de faire une expression régulière (enfin 2) pour avoir l'équivalent d'un addslashes et stripslashes qui sont disponible en php.

    C'est à dite :
    1) ajouter des anti-slash devant toutes les quotes et doubles quotes d'une String

    2) retirer les anti-slash devant toutes les quotes et doubles quotes d'une String

    Quelqu'un aurait-il ca tout fait dans un coin ? je suis vraiment une bille en expression régulière, et j'ai rien trouvé de convaincant sur le web pour l'instant :-(

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 76
    Par défaut
    Ah oui... j'oubliais...

    Le truc qui me prend la tête en fait... c'est d'ajouter l'anti-slash devant un autre anti-slash...

    c'est à dire que si dans ma chaine j'ai déjà \" ... je voudrais avoir \\\" ... et c'est la que je patauge dans mon expression régulière...

  3. #3
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    À ta place, je ferait une boucle qui vérifie un par un les cartactères de ta chaîne et je passerait ce caractère dans un switch qui décide exactement l'action à entreprendre. De plus je le combinerait avec la petite fonction que j'ai fait pour ajouter des actactères au beau milieu d'une chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    //Ajoute un caractère dans la chaine
    // c : Caractère
    // s : Chaine
    // i : Indice
    function addCar(c, s, i) {
    	var chaine = "";
    	if(i>0) {
    		for(var j=0;j<i;j++) {
    			chaine += s.charAt(j);
    		}
    	}
    	chaine += c;
    	for(var j=i;j<s.length;j++) {
    		chaine += s.charAt(j);
    	}
    	return chaine;	
    }
     
    function addslashes(str) {
      for(var i=0;i<str.length;i++) {
        switch(str.charAt(i)) {
          case "\" : addCar("\\", str, --i);
          case "'" : addCar("\", str, --i);
        }
      }
    }
    Et pour supprimer environ la même chose mais avec cette fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Supprime un caractère dans la chaine
    function delCar(s, i) {
    	var chaine = "";
    	if(i>0) {
    		for(var j=0;j<i;j++) {
    			chaine += s.charAt(j);
    		}
    	}
    	for(var j=(i+1);j<s.length;j++) {
    		chaine += s.charAt(j);
    	}
    	return chaine;
    }
    C'est de la théorie, il reste à se pencher sur comment faire ce code pour qu'il gère les caractères " et \ correctement.

    J'espère que ça peut t'aider!

  4. #4
    Membre éclairé Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Par défaut
    pour gérer le \\ tu pourrais je pense mettre une sorte de flag qui se lève quand tu tombe sur un \ et tombe sinon ça te permettrait de savoir si la lettre précedente était un \ et donc de pas supprimer les deux

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 76
    Par défaut
    Je note tout ca... j'vais tester ca dans le journée, je vous dirais ce que ca donne...


    Merci

  6. #6
    Invité de passage
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1
    Par défaut
    Utiliser les expressions régulière est à mon avis la meilleur méthode..

    pour remplacer " en \"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var = Var.replace(/\"/g,"\\\"");
    et pour remplacer ' en \'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var = Var.replace(/\'/g,"\\\'");

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Par défaut
    Bonjour, je remonte un peu le post

    transforme \' en '
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    donne = donne.replace(/\\\'/g,"'");
    par contre je n'arrive pas a transformer \" en "

    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    donne = donne.replace(/\\\"/g,'"');
    mais ca ne marche pas

  8. #8
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut
    Attention il y a une différence quand on exprime l'expression
    entre 2 / (expression régulière)
    et entre guillemet (String qu'on passe a un constructeur d'objet RegExp qui crée l'expression régulière). Car dans ce second cas il faut respecter la stx du String

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    donne = donne.replace(/\\/g,'"');
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var e = "\\\\""
    var r = new RegExp(e, "g");
    donne = donne.replace(r,'"');
    pour remplacer un anti slash suivi d'un guillement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    donne = donne.replace(/\\"/g,'"');
    ce qui donne avec le constructeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var e = "\\\\\""
    var r = new RegExp(e, "g");
    donne = donne.replace(r,'"');

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Par défaut
    merci pour cette explication

Discussions similaires

  1. JavaScript<---->ActionScript
    Par crazypiou dans le forum Flash
    Réponses: 21
    Dernier message: 17/04/2009, 17h14
  2. [MySQL] addslashes() stripslashes() et "" ''
    Par cotede2 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 01/05/2007, 00h18
  3. Réponses: 7
    Dernier message: 24/09/2005, 13h30
  4. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 06/05/2003, 14h24
  5. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo