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.

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%>&nbsp;</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>
J’ai essayé toutes les combinaisons de addslashes et stripslashes, pas moyen de faire en sorte de les gérer correctement.

Si quelqu’un a une idée, je suis preneur.

Merci d'avance

Godot