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

Langage PHP Discussion :

Création en php de strings contenant des guillemets " ' -- Problème d'échappage \"


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 85
    Points : 65
    Points
    65
    Par défaut Création en php de strings contenant des guillemets " ' -- Problème d'échappage \"
    Bonjour,

    Je suis confronté à un très gros problème dans mes fonctions à cause des fameux guillemets simple ou double " ' .

    J'ai plusieurs fonctions ou scripts qui génère des chaines divers comme des requetes Mysql, ou l'affichage d'éléments Html ou Javascript. Ces requêtes incluent ou affichage des $variable tel que des bouts de code html etc. qui peuvent contenir des guillements.

    Le problème: dès que je commence à mélanger les languages et les inclusions, j'ai des problèmes avec les " " ou les ' ' ça dépend duquel je choisis d'abandonner.

    Voici un exemple:
    J'ai volontairement sorti le tout de PHP pour supprimer un $value="" et ainsi quelques guillements, mais ça ne change rien au problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:popImage('imgUp/mets/<?= addslashes(htmlspecialchars($valueMet[5])); ?>','Image')">
    Le code marche bien SAUF si ma variable contient un ' (apostrophe) dans lequel cas il s'arreter d'executer le code html/javascript une fois l'apostrophe rencontré.
    Si j'inverse les " par des ' : href='javascript:popImage("$value") le problème reste le même mais s'inverse également: les apostrophes vont passer mais les " vont bloquer.

    Les apostrophes sont pourtant bel et bien escaper grâce à addslashes (\') mais le script bloque quand même.

    Comment faire?? J'ai essayé toutes les fonctions addslashes, mysql_real_escape_string, j'ai meme essayé un str_replace() pour le faire manuelement mais rien ne fonctionne. Dans certains cas plus "simple" j'ai pu m'en sortir grâce à addslashes ou htmlspecialchars ou en séparant le html du php en ouvrant/fermant les balises php <? ?>, mais quand je dois jongler entre php/javascript ça coince.


    Merci de votre aide si quelqu'un a une solution, ou même une piste...
    "Software is like sex, it's better when it's free" -- Linus Torvalds

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    pour le code JavaScript utilise la fonction "addcslashes" et ensuite "htmlspecialchars" pour le code html
    donc ça donnerai ça par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a onclick="popImage('imgUp/mets/<?php echo htmlspecialchars(addcslashes($valueMet[5], "'\r\n\\"), ENT_COMPAT, 'UTF-8');?>', 'Image');">

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2014, 20h52
  2. [XL-2007] Tri d'une colonne de string contenant des chiffres
    Par Xunopa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2011, 10h59
  3. [AC-2007] Création automatique d'un GroupBox contenant des CheckBox
    Par andy331 dans le forum VBA Access
    Réponses: 9
    Dernier message: 12/06/2010, 13h46
  4. String contenant des guillemets
    Par kavdo34 dans le forum Langage
    Réponses: 3
    Dernier message: 15/02/2010, 11h40
  5. Import avec fichier contenant des guillemets
    Par Maximus06 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/07/2006, 12h07

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