PHP - Problème de quotes et d'apostrophes

darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   -  
easycomp Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je voudrais créer une constante SAVE_PATH qui contiendrait un chemin en absolu sous windows.
Le problème est que ce chemin ... contient des backslashs ( \ ) qui échappent tous les caractères qui les suivent.
Et étant donné que je veux concaténer une valeur, je n'arrive pas à le faire.
J'ai pourtant essayé :

- DEFINE('SAVE_PATH', 'C:\Users\Christophe\Documents\"'.$infos['titre'].'"');
- DEFINE("SAVE_PATH", "C:\Users\Christophe\Documents\".$infos['titre'].");
- DEFINE("SAVE_PATH", "C:\Users\Christophe\Documents\'".$infos['titre']."'");
- DEFINE("SAVE_PATH", "C:\Users\Christophe\Documents\$infos['titre']");

Et plein d'autres, mais jamais de résultat concluant ...
Auriez-vous une idée de comment procéder ?
Merci d'avance.
Configuration: Window XP
1.5GO RAM

5 réponses

  1. easycomp Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   30
     
    Salut,

    La solution est dans ta question, si un antislash va échapper le caractère suivant donc tu dois... échapper le caractère antislash :)
    Tu dois donc utiliser la belle fonction php addslashes() sur tes variables et cela devrait marcher .
    0
  2. le père
     
    Bonjour

    supposons que $infos['titre'] vaille toto
    DEFINE('SAVE_PATH', 'C:\Users\Christophe\Documents\"'.$infos['titre'].'"'); définit C:\Users\Christophe\Documents\"toto".

    DEFINE("SAVE_PATH", "C:\Users\Christophe\Documents\".$infos['titre'].");
    le ." à la fin commence une chaîne qui ne se termine jamais, c'est absurde

    DEFINE("SAVE_PATH", "C:\Users\Christophe\Documents\'".$infos['titre']."'"); définit C:\Users\Christophe\Documents\'toto'

    DEFINE("SAVE_PATH", "C:\Users\Christophe\Documents\$infos['titre']");
    Quand une variable tableau ($infos['titre']) est employée entre double quotes, il ne faut pas mettre d'apostrophes autour de l'indice ->$infos[titre] (attention, uniquement entre doubles quotes)
    les \U, \D ne correspondent pas à des séquences d'échappement, mais le \$, lui, est interprété comme un simple caractère $. Il faut donc échapper le \ qui précède

    d'où la solution avec double quotes
    DEFINE("SAVE_PATH", "C:\Users\Christophe\Documents\\$infos[titre]");

    et aussi une solution en simples quotes
    DEFINE("SAVE_PATH", 'C:\Users\Christophe\Documents\'.$infos['titre']);
    0
    1. easycomp Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   30
       
      Salut,
      Son problème n'est pas l'inclusion de la variable mais les caractères d'échappement contenus dans la variable.

      Il doit donc utiliser la solution du addslashes() ;)
      0
  3. le père
     
    J'ai expliqué les erreurs et mes explications sont justes. Il y avait divers problèmes dans chacun de essais.

    Par contre, j'avais oublié dans la solution à simple quote que dans \'. le \ allait échapper l'apostophe. Je corrige donc cette dernière solution :

    DEFINE("SAVE_PATH", 'C:\Users\Christophe\Documents\\'.$infos['titre']);

    Le PHP est prévu pour écrire les chaînes sans la fonction addslashes.
    0
  4. darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
     
    Merci !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. easycomp Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   30
     
    Mais de rien ! :)
    0