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 -
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.
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:
- PHP - Problème de quotes et d'apostrophes
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Saut de ligne php - Forum PHP
5 réponses
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 .
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 .
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']);
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']);
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question