-
[Tableaux] JSON et nl2br
Bonjour a tous,
j'utilise la fonction json_encode pour convertir mes tableaux en chaines de caractère. Je voudrais convertir tous les \n des chaines contenues dans ce tableau soient remplacées par des <br/> avec la fonction nl2br.
Hélas, impossible de les faire remplacer, les \n restent inchangés.
Cela est sans doute du au fait que la chaine json est de la forme :
Code:
["blablabla\n\nblablabla";"blob\n"]
J'ai essaye d'echapper les guillemet, voir de les supprimer, mais rien a faire, on ne peut pas remplacer les \n par des <br/>.
Le probleme vient peut etre du mysql_real_encode que j'utilise avant de sauvegarder en base, mais je n'ai rien trouve de ce cote non plus.
Merci d'avance de votre aide.
-
nl2br ne remplace pas les (\r)\n : elle ajoute <br /> (avant) lorsqu'elle rencontre ces caractères.
Si vous voulez échapper ces caractères il faudra le faire explicitement car ce ne sont pas à proprement parler des caractères spéciaux - ils restent tels quels - (avec str_replace ou addcslashes).
-
Bonsoir,
oui c'est effectivement ce que je souhaite, mais les <br/> ne sont pas ajoutés, d'où mon interrogation. Si quelqu'un sait comment le contourner ?
Exemple, ca sera peut etre plus clair :
Code:
echo nl2br(json_encode(array("toto\n", "titi\ntata")));
Cela affiche : ["toto\n","titi\ntata"] (aucun <br/>)
Si on met le nl2br directement sur les chaines avant le json_encode, cela fonctionne, mais je ne peux pas le faire à cet endroit dans mon code.
-
C'est la fonction json_encode en fait qui restitue la valeur littérale \n (en deux caractères) aux sauts de ligne - ce qui est normal. On les voit très bien apparaître en tant que tel via un var_dump par exemple.
-
Ok, merci pour l'explication ;)
C'était effectivement ça le problème, le découpage en 2 caractères.
J'ai pu arriver au bon résultat en corrigeant comme cela :
Code:
echo str_replace("\\n", "<br/>", json_encode(array("toto\n", "titi\ntata")));