Probléme avec les guillemets !

Eléphant du PHP | 259 Messages

12 juil. 2007, 18:16

Bonjour,

J'ai un petit probléme avec les guillemets. J'aimerais afficher la chaine avec les " " .

Quand je fait ceci :
 echo  stripslashes($_POST['titre'][0]);
Cela m'affiche bien le titre correctement (avec les ")

Mais quand je veux l'afficher dans un input, ça ne marche pas, ça affiche des \ au lieu du " et aprés il n'affiche plus le reste du titre !

voici le code :

Code : Tout sélectionner

<input name="titre[]" value="<? echo stripslashes($_POST['titre'][0]) ?>" size="25"/>

Comment faire pour afficher correctement le texte dans le input ?

Merci d'avance pour vos réponses.

ViPHP
ViPHP | 5924 Messages

12 juil. 2007, 18:48

Donne le code html résultant, ce sera ça de gagné :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

12 juil. 2007, 18:50

Bonjour,

Tu as essayé sans le stripslashes?

Code : Tout sélectionner

<input name="titre[]" value="<? echo $_POST['titre'][0] ?>" size="25"/>
Quand tout le reste a échoué, lisez le mode d'emploi...

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

12 juil. 2007, 18:52

Il ne faut pas oublier htmlspecialchars() aussi, histoire d'échapper les-dits guillemets.

Petit nouveau ! | 4 Messages

12 juil. 2007, 19:35

T'as essayé ça:
<input name="titre[]" value="<? print "\"stripslashes($_POST['titre'][0])\""; ?>" size="25"/>
?

EDIT: ça marche mieux comme ça?
Modifié en dernier par billdoor le 12 juil. 2007, 20:39, modifié 1 fois.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

12 juil. 2007, 19:41

Err... à la rigueur j'ai une meilleur question, est-ce quoi toi tu l'as essayé avant de poster ? :-k

Eléphant du PHP | 259 Messages

13 juil. 2007, 09:28

J'ai essayé ça :

Code : Tout sélectionner

<input name="titre[]" value="<? echo $_POST['titre'][0] ?>" size="25"/>
Mais ça met un \ au lieu d'un guillement et le reste du titre ne s'affiche pas !

En essayant ça :

Code : Tout sélectionner

<input name="titre[]" value="<? print "\"stripslashes($_POST['titre'][0])\""; ?>" size="25"/>
Ca me met cette erreur : Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING.

Avec :

Code : Tout sélectionner

echo htmlspecialchars ($_POST['titre'][0])
Ca va un peu mieux, ça met des \ avec les ".

C'est bon j'ai trouvé je pense, j'a essayé :

Code : Tout sélectionner

echo stripslashes(htmlspecialchars($_POST['titre'][0]))
Ca m'affiche correctement le titre...

Je pense qu'il n'y a pas plus simple ou plus cour ?!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 juil. 2007, 10:43

Petit rappel : Pour échapper un caractère en PHP ou Javascript (par exemple une guillemets à l'intérieur d'une chaine délimitée par des guillemets), on place un antislash devant.
Pour échapper un caractère en HTML, comme le signal Hubert, on utilise les entités html (> , &quote; etc.). C'est notamment à ça que servent les fonctions htmlspecialchars() ou htmlentities()

Le stripslashes() n'a quant à lui rien à voir, il permet seulement de supprimer les antislash ajoutés par addslashes() ou par les magic quotes et réafficher la valeur telle qu'elle a été saisie :) Il n'y a donc pas plus simple pour ce que tu veux faire. (encore que personnellement je le ferais dans l'autre sens : la suppression des \ avant la transformation en entités html, bien qu'au final ça change pas grand chose :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 259 Messages

13 juil. 2007, 10:45

ok merci :wink: