Page 1 sur 1

Probléme avec / et caractéres spéciaux

Posté : 16 juin 2009, 17:57
par Nathou
J'ai un formulaire dans lequel j'entre un texte, qui est ensuite envoyé dans ma base de donnée, puis repris sur une autre page, le problème :

Le texte que je rentre :
Bonjour et bienvenue, j'aurais aimé être de la partie !
Le même texte qui arrive dans la BDD :
Bonjour et bienvenue, j'aurais aimé être de la partie !
Le même texte qui arrive sur l'autre page :
Bonjour et bienvenue, j\\\'aurais aimé être de la partie !
Au niveau du php :
Le texte que je rentre :
$patterns[] = "#\[fc\]([a-z0-9\#]+)\[/fc\](.*?)\[/f\]#Ssi";
          $replacements[] = '<font color="\1">\2</font>';
          $patterns[] = '#\[img\](.*?)\[/img\]#Smi';
          $replacements[] = '<img src="\1" alt="\1" style="border:0px;" />';
          $patterns[] = "#\[fc\]([a-z0-9\#\ \[\]]+)\[/fc\]#Ssi";
          $replacements[] = '<font color="\1">';
          $patterns[] = "#\[/f\]#Ssi";
          $replacements[] = '</font>';
          $ally['ally_description'] = preg_replace($patterns, $replacements, $ally['ally_description']);
          $lang['ally_description'] = nl2br($ally['ally_description']);
Le même texte qui arrive sur l'autre page :
if ($ally_description != "")
        {
          $ally_description = "<tr><th colspan=2 height=100>{$ally_description}</th></tr>";
        }
J'aimerais donc savoir ce qui ne va pas, pourquoi mon texte arrive t'il dans la BDD sous cette forme ; et s'il n'est pas possible de le faire arrivé avec une forme normale dans la BDD, comment "décoder" le texte qui est dans la BDD pour qu'il s'affiche sous une forme normale dans l'autre page?

Merci à ceux qui m'aideront :)

Posté : 16 juin 2009, 18:48
par Aureusms
Je crois que les formulaires sont codés en UTF8 par défaut, un truc comme cela.
Essaye avec utf8_decode() pour voir ce que donne ton formulaire avant d'entrer la phrase dans la base.

Pour les \\\ tu as soit un addslashes() ou sont équivalent mysql quelque part soit tu as activé les magic-quote soit les deux (addslashes ou son équivalent + magic_quote)

Posté : 16 juin 2009, 20:11
par Wolfgang
Salut,
tu peux également utiliser
htmlentities(addslashes(nl2br($val)))
pour encoder les caractères spéciaux dans la base de données, et ensuite
html_entity_decode(stripslashes($val))
pour décoder tes valeurs.

Posté : 16 juin 2009, 20:37
par AB
Salut,
tu peux également utiliser
htmlentities(addslashes(nl2br($val)))
pour encoder les caractères spéciaux dans la base de données, et ensuite
html_entity_decode(stripslashes($val))
pour décoder tes valeurs.
Avant cette solution un peu extrême à mon goût, peut être regarder un tuto sur l'encodage utf-8 http://www.phpfrance.com/forums/voir_sujet-245062.php

Posté : 16 juin 2009, 21:37
par Nathou
Salut,
tu peux également utiliser
htmlentities(addslashes(nl2br($val)))
pour encoder les caractères spéciaux dans la base de données, et ensuite
html_entity_decode(stripslashes($val))
pour décoder tes valeurs.
Ça marche niquel !

Merci pour vos réponses, AB je garde ton lien dans mes favoris, je regarderais de plus prêt quand j'aurais un peu de temps, ça à l'air intéressant 8-)