[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
le père - 12 déc. 2007 à 14:19
A voir également:
- [PHP HTML] Transformation d'une variable
- Editeur html - Télécharger - HTML
- Easy php - Télécharger - Divers Web & Internet
- Vba range avec variable ✓ - Forum VB / VBA
- Espace html ✓ - Forum HTML
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
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
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 :
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
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
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+
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+