Bonjour,
Comme celui qui va me répondre (j’espère !!) le sait très bien, afin de ne pas confondre les guillemets qui servent à désigner une valeur littérale avec les guillemets qui se trouvent DANS la valeur littérale, on utilise des anti-slashs qu’il faut ajouter et supprimer dans les allés et retours du code. C’est comme ça qu’une chaîne telle que
- l'autre
se promène dans le code sous la forme
- l\'autre
L’anti-slash doit, bien sûr, être enlevé avant d’afficher la chaîne.
Seulement voilà, je me prends le chou avec le champ caché (<input type=hidden …>) qui semble ne pas prendre en considération le caractère d’échappement et tronque tout ce qui suit l’apostrophe.
Pour bien montrer ce dont je parle, voici un modèle réduit (néanmoins opérationnel) du code sur lequel je travaille.
J’ai essayé toutes les combinaisons de addslashes et stripslashes, pas moyen de faire en sorte de les gérer correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 <!-- ***************** fichier index.php *************** --> <html><head></head><body><?php if (get_magic_quotes_gpc()) echo "Le slashes automatiques sont ON" ; elseif (!get_magic_quotes_gpc()) echo "Le slashes automatiques sont OFF" ; echo "<table width=100%><tr><td width=20%>La variable passée : " . htmlentities($_POST['texte']) . " " . htmlentities($_POST['passe_texte']) . "</td><td><center>" ; // Dispatche soit vers l'éditeur, soit vers la prévisualisation if($_POST['vers_pre']) echo previsualisation() ; elseif (!$_POST['vers_pre'] or $_POST['vers_ed']) echo editeur() ; echo "</center></td><td width=20%> </td></tr></table>" ; // Editeur qui permet de saisir du texte function editeur() { $retour = "<h1>Editeur</h1> <form action='index.php' method='post' name='post'> <textarea name='texte' style='border:1px solid red;width:200px;height:200px'>" . $_POST['passe_texte'] . "</textarea><br> <input type='submit' name='vers_pre' value='Prévisualiser' style='width:200px'> </form>"; return $retour ; } //La prévisualisation qui sert à voir le résultat de la mise en forme function previsualisation() { $retour = "<h1>Prévisualisation</h1> <form action='index.php' method='post' name='post'> <div style='border:1px solid blue;width:200px;height:200px;text-align:left'>" . $_POST['texte'] . "</div> <input type='submit' name='vers_ed' value='Editer' style='width:200px'> <input type=hidden value='" . addslashes($_POST['texte']) . "' name=passe_texte> </form>"; return $retour ; } ?></body></html>
Si quelqu’un a une idée, je suis preneur.
Merci d'avance
Godot
Partager