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.
A voir également:

5 réponses

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
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
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
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
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
Merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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