首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nl2br不为我工作

nl2br不为我工作
EN

Stack Overflow用户
提问于 2010-08-17 02:35:38
回答 12查看 27.3K关注 0票数 13

在从数据库中获取数据之后,我无法让nl2br函数工作:

代码语言:javascript
复制
$result = mysql_query("SELECT comments..etc.etc..");

while ($row = mysql_fetch_array($result))
{
  echo nl2br($row["comments"]);
}

在数据库行comments

代码语言:javascript
复制
\r\nThanks,\r\n

输出:

与DB中相同:

代码语言:javascript
复制
\r\nThanks,\r\n

如果我像这样简单地测试它,它可以正常工作:

代码语言:javascript
复制
<?php
$mystring = "\r\nThanks,\r\n";
echo nl2br($mystring);
?>

输出:

代码语言:javascript
复制
converts \r \n to <br />
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-08-17 04:13:49

很可能在将数据添加到DB中时,您正在进行两次转义。

检查向DB添加数据的代码,并删除不必要的转义。

很可能是一些毫无意义的“普遍消毒”功能。

这很简单。

让我们用一个引号,而不是一个换行符来演示。行为也一样。斜杠被剥离,然后数据进入数据库。

因此,在正常情况下:

来源:It's

转义后:It\'s

被删除的查询执行斜杠和

在数据库和后台It's中都有

在双重逃逸案件中:

来源:It's

转义后:It\'s

第二次逃逸后:It\\\'s

被删除的查询执行斜杠和

在数据库和后台It\'s中都有

我们的数据被破坏了。

只要让自己明白,逃避,我不是什么神奇的东西,使你的数据“安全”(因此,可以做很多次,正如你可能认为)。只是在某些符号上加了一个反斜杠。

票数 8
EN

Stack Overflow用户

发布于 2010-08-17 03:46:41

试试这个:

代码语言:javascript
复制
echo preg_replace('/\v+|\\\r\\\n/Ui','<br/>',$row["comments"]);
票数 35
EN

Stack Overflow用户

发布于 2015-10-14 12:58:26

我知道这是个老职位,但如果你和我一样偶然发现了这个问题,而上面的问题对你没有用,那么这个解决方案反而会对你有所帮助:

代码语言:javascript
复制
echo nl2br(stripslashes($row["comments"]));

(它们不是相同的函数,请注意条后附加的"c“)

代码语言:javascript
复制
echo nl2br(stripcslashes($row["comments"]));

查看帮助我的原始线程:nl2br() not working when displaying SQL results

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3498930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档