[PHP HTML] Transformation d'une variable
Résolu
KILLGUNBLOOD
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
le père -
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
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:
- [PHP HTML] Transformation d'une variable
- Editeur html - Télécharger - HTML
- Easy php - Télécharger - Divers Web & Internet
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Expert php pinterest - Télécharger - Langages
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
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..
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..
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
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
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 :
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
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