在从数据库中获取数据之后,我无法让nl2br函数工作:
$result = mysql_query("SELECT comments..etc.etc..");
while ($row = mysql_fetch_array($result))
{
echo nl2br($row["comments"]);
}在数据库行comments中
\r\nThanks,\r\n输出:
与DB中相同:
\r\nThanks,\r\n如果我像这样简单地测试它,它可以正常工作:
<?php
$mystring = "\r\nThanks,\r\n";
echo nl2br($mystring);
?>输出:
converts \r \n to <br />发布于 2010-08-17 04:13:49
很可能在将数据添加到DB中时,您正在进行两次转义。
检查向DB添加数据的代码,并删除不必要的转义。
很可能是一些毫无意义的“普遍消毒”功能。
这很简单。
让我们用一个引号,而不是一个换行符来演示。行为也一样。斜杠被剥离,然后数据进入数据库。
因此,在正常情况下:
来源:It's
转义后:It\'s
被删除的查询执行斜杠和
在数据库和后台It's中都有
在双重逃逸案件中:
来源:It's
转义后:It\'s
第二次逃逸后:It\\\'s
被删除的查询执行斜杠和
在数据库和后台It\'s中都有
我们的数据被破坏了。
只要让自己明白,逃避,我不是什么神奇的东西,使你的数据“安全”(因此,可以做很多次,正如你可能认为)。只是在某些符号上加了一个反斜杠。
发布于 2010-08-17 03:46:41
试试这个:
echo preg_replace('/\v+|\\\r\\\n/Ui','<br/>',$row["comments"]);发布于 2015-10-14 12:58:26
我知道这是个老职位,但如果你和我一样偶然发现了这个问题,而上面的问题对你没有用,那么这个解决方案反而会对你有所帮助:
echo nl2br(stripslashes($row["comments"]));或(它们不是相同的函数,请注意条后附加的"c“)
echo nl2br(stripcslashes($row["comments"]));https://stackoverflow.com/questions/3498930
复制相似问题