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 :

échappement d'une chaine


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut échappement d'une chaine
    Bonjour a tous.

    Comme je ne suis pas très fort en regex (et c'est un euphémisme lol) j'aurais voulu savoir si il étais possible en js d'ajouter un \ devant chaque '

    En clair je récupère une string contenant éventuellement des apostrophes.

    Comme cette 'cotte' me bloque ma fonction j'aurais aimé ajouter un caractère d’échappement.

    Merci d'avance
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Il va falloir expliciter un peu plus ...

    => un exemple de chaine

    tu veux remplacer ' par \' ??
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    En fait ce qu'il me faudrait est un fonction qui prends une chaine contenant par exemple "mur d'image"
    Pour me restituer "mur d\'image"
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  4. #4
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    J'ai testé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function addslashes(str) {
     
    	str=str.replace(/\'/g,'\\\'');
    	str=str.replace(/\"/g,'\\"');
    	str=str.replace(/\\/g,'\\\\');
    	str=str.replace(/\0/g,'\\0');
    	return str;
    }
     
     
    titre=addslashes(titre);
    Mais ça change malheureusement rien
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function addslashes(str) {
    return  	str.replace(/'/g,"\\'");
     	}
     
     	alert(addslashes("mur d'images") )
    Avec une liste de caractères à échapper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function addslashes(str) {
    return str.replace(/(['"])/g,"\\$1");
     	}
     
     	alert(addslashes("mur d'images \" invisible\"") )
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Ne marche pas.

    Il me renvoi ça en html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p>mur d_image</p>','450.5 Ko','1600X1200 pixels',' 582',' 2012-10-02',' mur d'image',' 5',' 26',' inconnu',' inconnu','mur;sous-station;image ; '
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    dans quelle contexte ? ou affiches tu la sortie ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Sorry j'aurais du commencer par la.

    J'ai une fonction JS qui me permets d'ouvrir une petite page.

    La fonction est feedé par une requête en PHP.

    Voici la fonction et mon essai d’échappement:
    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
    function addslashes(str) {
    return  	str.replace(/'/g,"\\'");
     	}
     
     
    function popimage(img,titre,domaine,sous_domaine,type,centre,locageo,locaferro,gps,locakilometrique,legende,poids,taille_image,id_fichier, date,nom,id_domaine,id_sous_domaile,id_centre,id_loca_geo,mots_cle) {
    titre=addslashes(titre)
    var w=open("",'image','width=680,height=700,toolbar=no,scrollbars=no,resizable=no');
     
     
     
     
    w.document.write("<body onload='checksize()' /*onblur='window.close()'*/ /*onclick='window.close()'*/ topmargin=0 leftmargin=0 marginwidth=0 marginheight=0>");
    w.document.write("<h2 style='float:left;text-transform:uppercase;width:100%;background-color:#6e267b;color:#FFF;font-size:1em;text-align:center;padding:2px 0px;margin:2px 0 -20px 0px;'>"+titre+"</h2><br/>");
    w.document.write("<img src='"+img+"'  alt='image' width=650px height=450px style='margin-left:15px;  margin-top:12px;'/><br/>");
    w.document.write("<div style=\"border: 2px groove #6B247B;  padding-top:15px; padding-left:45px; padding-bottom:15px; margin-left:15px; margin-top:7px; width=650px\"><span>Date de prise de vue:<span style='color=grey;'>"+date+"</span><br/>Légende: <span style='color=grey;'>"+nom+"</span><br/>Thématique:  <span style='color=grey;'><a href='#' onclick=\"opener.redirection('domaine',"+id_domaine+"); window.close();\" style='color:grey;'>"+domaine+"</a></span><br/>Catégorie: <span style='color=grey;'><a href='#' onclick=\"opener.redirection2('domaine',"+id_domaine+","+id_sous_domaile+"); window.close();\" style='color:grey;'>"+sous_domaine+"</a></span><br/>Centre SNCF: <span style='color=grey;'>"+centre+"</span><br/>Localisation géographique: <span style='color=grey;'>"+locageo+"</span><br/>Localisation ferroviaire: <span style='color=grey;'>"+locaferro+"</span><br/>Mots clés: <span style='color=grey;'>"+mots_cle+"</span><br/></span></div>");
     
     
    w.document.close();
    }
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    document.write ...

    essaye en rajoutant une couche ou deux de \ dans le replace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    return  	str.replace(/'/g,"\\\'");
    return  	str.replace(/'/g,"\\\\'");
    return  	str.replace(/'/g,"\\\\\'");
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    j'ai tenté avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    return  	str.replace(/'/g,"\\'");
    return  	str.replace(/'/g,"\\\'");
    return  	str.replace(/'/g,"\\\\'");
    return  	str.replace(/'/g,"\\\\\'");
    return  	str.replace(/'/g,"\\\\\\'");
    return  	str.replace(/'/g,"\\\\\\\\'");
    ça ne change rien

    quand au document.write je sais que c'est caca mais dans la situation présente ça m'a bien dépanné.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    essaye un encodeURIComponent() au lieu du replace ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Sortie html identique avec encodeURIComponent(). Snif.
    Je hais les regex.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  13. #13
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Bon étant a court de temps je me suis décidé a employer la méthode "c'est caca mais ça marche".

    Comme ça voulait pas me mettre les échappement ni rien d'autres j'ai fini par modifier le caractère ' avant enregistrement dans la base de données pour éviter les conflits.

    Pas très gracieux j'en suis conscient.
    Mais en attendant ça servira de rustine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $intitule= str_replace("'","&acute;",$intitule);
    Merci en tout cas pour ton aide.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. langage] Découper une chaine suivant un délimiteur
    Par totox17 dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2002, 16h25
  2. Réponses: 23
    Dernier message: 16/11/2002, 19h41
  3. Réponses: 2
    Dernier message: 10/07/2002, 11h51
  4. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08
  5. Réponses: 3
    Dernier message: 12/06/2002, 21h15

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