[PHP HTML] Transformation d'une variable

Résolu
KILLGUNBLOOD Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
 le père -
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

le père
 
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
le père
 
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   Statut Contributeur Dernière intervention   857
 
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   Statut Membre Dernière intervention  
 
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