nl2br ne travaille pas pour moi
Je ne peux pas obtenir nl2br
fonction de travail après l'extraction de données à partir de ma base de données:
$result = mysql_query("SELECT comments..etc.etc..");
while ($row = mysql_fetch_array($result))
{
echo nl2br($row["comments"]);
}
En ligne de base de données comments
:
\r\nThanks,\r\n
De SORTIE:
Même que dans la bd:
\r\nThanks,\r\n
Si j'ai simplement la tester comme il fonctionne très bien:
<?php
$mystring = "\r\nThanks,\r\n";
echo nl2br($mystring);
?>
De SORTIE:
converts \r \n to <br />
source d'informationauteur sebb
Vous devez vous connecter pour publier un commentaire.
Plus vous êtes susceptible de le faire s'échapper à deux reprises, lors de l'ajout de vos données en DB.
Vérifiez votre code qui ajoute des données dans la base de données et supprimer inutile de s'échapper.
La plus probable, il est certain absurde universelle "assainissement" de la fonction.
Eh bien, c'est facile.
Prenons un devis, pas un saut de ligne à démontrer. Le comportement de la même.
Des barres obliques être dépouillé puis les données de la base de données.
Ainsi, dans le cas normal:
source:
It's
après avoir échappé:
It\'s
par l'exécution de la requête slash dépouillé et
à la fois dans la base de données et à l'arrière
It's
en double échappement cas:
source:
It's
après avoir échappé:
It\'s
après la deuxième échapper:
It\\\'s
par l'exécution de la requête slash dépouillé et
à la fois dans la base de données et à l'arrière
It\'s
nous avons nos données gâté.
Juste vous faire comprendre que l'évitement j'ai pas quelque chose de magique qui rend vos données "sécurité" (et, par conséquent, peut être fait à plusieurs reprises, que, vous pensez probablement). C'est juste l'ajout d'une barre oblique inverse de certains symboles.
essayez ceci:
Je sais que c'est un vieux post, mais si comme moi vous avez trébuché à travers cette question, et le ci-dessus ne fonctionnent pas pour vous, cette solution peut vous aider à:
ou (ils ne sont pas la même fonction, la note supplémentaire "c" après un strip)
Voir le thread d'origine qui m'a aidé: nl2br() ne fonctionne pas lors de l'affichage de résultats SQL
Ma conjecture est que les barres obliques dans votre base de données sont littéral des barres obliques (suivi de n ou r), pas de retours à la ligne. Pouvez-vous trouver un moyen pour stocker littérale des retours à la ligne dans votre base de données?
Suite de la solution pour windows comme pour linux/unix de la machine
str_replace(array("\\r\\n", "\\r", "\\n"), "<br />", "string");
Assurez-vous que vous n'êtes pas à l'utilisation de chaînes à partir d'un fichier et/ou mis en apostrophe. Parce que la chaîne est traitée littéralement, et nl2br ne fonctionnera pas.
NL2BR travaillera avec double apostrophe.
De construction sur ce que Christian est en train de dire, pourquoi ne pas vous essayer de remplacer le littéral
'\r\n'
avec"\r\n"
?Données que vous avez stockées est déjà ajouté les barres obliques.
Vous devez utiliser stripslashes() d'abord, puis str_replace()