Godot a écrit :
J'ai essayé toutes les combinaisons de addslashes et stripslashes, pas moyen de faire en sorte de les gérer correctement.

J'ai eu l'occasion de noter que des gens qui posent des questions sur le php postent des sources - quand ils en postent - sorties de leur contexte et qu'il faut interpréter instruction par instruction pour les comprendre. D'où que je me sois dit que j'allais faire un modèle réduit de mon problème de sorte que la source que je posterai pourrait être copiée-collée directement dans un fichier index.php, et ainsi aider celui qui voudrait m'aider à voir facilement ce qui se passe. Apparemment, c'était une mauvaise idée, puisque partout où j'ai posté la question, personne ne semble avoir saisi mon intention.
Le problème précis tient à ce que le champ hidden (dans la fonction previsualisation()) interprète les guillemets de la chaîne même s'ils sont échappés avec l'anti-slash. En fait, le problème se pose partout où la valeur est entrée dans la valeur d'un attribut dans une balise, et non entre des balises ouvrantes et fermantes. Il ne se pose pas avec la balise TEXTAREA ou SELECT OPTION, mais se pose par exemple avec INPUT TYPE=TEXT ou, comme ici, avec INPUT TYPE=HIDDEN. J'ai finalement résolu le problème en remplaçant les guillemets par leurs entités html correspondantes. C'est pas très élégant mais c'est suffisant, car dans la source sur laquelle je travaille, le texte est tapé en bbcode et, donc, de toutes façons, il y a des remplacements à faire.
Pour la question en post-scriptum, les serveurs peuvent configurer php.ini de sorte à ce que les anti-slashes soient ajoutés automatiquement ou pas, et il faut évidemment que la source fonctionne dans les deux cas. La fonction get_magic_quotes_gpc() permet de le tester, elle renvoie vrai ou faux selon le cas. Dans ma source, je l'ai mise en début de code pour des raisons de déboggage.
Voilà, voilà.
En tout cas, merci pour ta réponse, et bonne continuation à toi aussi.
