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

Eléphanteau du PHP | 10 Messages

16 juin 2009, 17:57

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 :)

ViPHP
ViPHP | 1996 Messages

16 juin 2009, 18:48

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)
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 29 Messages

16 juin 2009, 20:11

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.

ViPHP
AB
ViPHP | 5818 Messages

16 juin 2009, 20:37

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

Eléphanteau du PHP | 10 Messages

16 juin 2009, 21:37

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-)