[PHP HTML] Transformation d'une variable

Résolu/Fermé
KILLGUNBLOOD Messages postés 19 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 19 mars 2010 - 12 déc. 2007 à 13:40
 le père - 12 déc. 2007 à 14:19
Bonjour,

Un problème sur lequel je ne comprend pas, si quelqu'un peut m'aider ?

J'ai une varible
$photo[1]="Q:\CARTE T\out\image\L20071212_094451\20071212324.tif";

si je fais un echo de cette variable
j'ai comme résultat
Q:\CARTE T\out\image\L20071212_094451€71212324.tif

Pourriez-vous me dire pourquoi ?

Merci
A voir également:

4 réponses

séqence '\2' doit certainement être interprétée en signe de monnaie euro.

le addslashes n'y changera rien

Pour voir le 'vrai' contenu da la chaîne c'est htmlentities qu'il faut utiliser et pas addslashes.

dans une chaîne entre guillemets doubles, un \ suivi d' un à 3 chiffres 0..7 est considérée comme un combre octal \200 est pris comme 128, code ascii de l'euro
C'est dans la ligne
$photo[1]="Q:\CARTE T\out\image\L20071212_094451\20071212324.tif"; 
que cela se passe, il y a donc dès le départ un euro dans $photo[1] et faire un addslashes ou un htmlentities n'y changera rien.

Le plus simple et de loin, c'est de mettre ta chaîne entre apostrophes simples.
D'ailleurs on devrait toujours utiliser les apostrophes simples pour les chaînes en php, sauf si on a vraiment besoin des caractères spéciaux \n,\r,\t etc..
1
Bonjour

Pour mieux comprendre ce qui se passe :
echo htmlentities($photo[1]);

puis recommence en mettant des apostrophes simples au lieu de doubles dans ta variable
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
12 déc. 2007 à 13:56
Parce que le caractère '\' est un caractère spécial. Son utilisation permet entre autre de gérer les saut de ligne '\n', et autres ('\r', '\t', etc.)
Lorsque tu écris \ dans ton chemin et tente ensuite de l'afficher, PHP tente d'abord d'interpréter le caractère qui suit ton '\'. Si \ plus le caractère qui suit correspond à un code connu (comme \n par exemple), alors la séquence est interprétée en saut de ligne, sinon la séquence est affichée telle quelle à l'écran.

Ce qui se passe donc dans ton cas, c'est que la séqence '\2' doit certainement être interprétée en signe de monnaie euro.
Comment faire pour palier à ce problème là ?
Il faut que tu passe ta chaine de caractère dans la fonction suivante :
addslashes
qui a pour but de neutraliser l'interprétation du '\' en ajoutant devant chaque '\' un autre '\'. En effet, la séquence '\\' permet d'afficher à l'écran un '\' (sans l'interpréter donc).

Ton code sera donc :
$photo[1]="Q:\CARTE T\out\image\L20071212_094451\20071212324.tif"; 
$photo[1] = addslashes($photo[1]);
echo $photo[1];


EDIT : Ce n'est pas la bonne fonction que j'ai donné en fait, ma mémoire me joue des tours. Une petite recherche dans l'aide PHP et tu devrait trouvé ce qui te conviendra : https://www.php.net/manual/fr/function.htmlspecialchars.php
0
KILLGUNBLOOD Messages postés 19 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 19 mars 2010
12 déc. 2007 à 14:01
Merci pour les réponses,
je viens de faire les tests et le problème vient bien des doubles quotes

Merci Le père

et merci aussi kij_82 pour le complément d'info.

A+
0