PHP - Problème de quotes et d'apostrophes

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. 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 .
    1. 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']);
      1. 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() ;)
    2. 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.