nl2br不适合我

时间:2010-08-17 02:35:38

标签: php

从我的数据库中获取数据后,我无法使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 />

12 个答案:

答案 0 :(得分:26)

试试这个:

echo preg_replace('/\v+|\\\r\\\n/Ui','<br/>',$row["comments"]);

答案 1 :(得分:8)

我知道这是一篇很老的帖子,但如果像我一样,你偶然发现了这个问题并且上面的内容对你不起作用,这个解决方案可能会帮助你:

echo nl2br(stripslashes($row["comments"]));

(它们不是同一个功能,请注意其他&#34; c&#34;剥离后)

echo nl2br(stripcslashes($row["comments"]));

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

答案 2 :(得分:5)

将数据添加到数据库时,很可能是两次转义 检查将数据添加到数据库的代码,并删除不必要的转义。

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

嗯,这很容易。
让我们来一个引用,而不是一个新线来展示。行为一样。 被剥离的斜线然后数据进入数据库。

因此,在正常情况下:

来源:It's
逃跑后:It\'s
通过查询执行斜杠被剥离和
在数据库和后面It's

双重逃避案件中的

来源:It's
逃跑后:It\'s
第二次逃跑后:It\\\'s
通过查询执行斜杠被剥离和
在数据库和后面It\'s中 我们的数据被破坏了。

让自己明白,逃避我并不是一件让你的数据“安全”的神奇东西(因此可以做多次,如你所想的那样)。它只是为某些符号添加反斜杠。

答案 3 :(得分:3)

我的猜测是数据库中的斜杠是文字斜杠(后跟n或r),而不是换行符。你能找到一种在数据库中存储文字换行符的方法吗?

答案 4 :(得分:3)

以下解决方案适用于Windows和Linux / unix机器

str_replace(array("\\r\\n", "\\r", "\\n"), "<br />", "string");

答案 5 :(得分:2)

确保您不要在文件中使用字符串和/或在单撇号中设置。因为字符串按字面意思处理,并且nl2br不起作用。 NL2BR将使用双撇号。

答案 6 :(得分:1)

基于Christian所说的内容,为什么不尝试用'\r\n'替换文字"\r\n"

答案 7 :(得分:1)

您存储的数据已经添加了斜杠。

首先必须使用stripslashes()然后使用str_replace()

stripslashes(str_replace('\r\n','<br/>',$row["comments"]))

答案 8 :(得分:0)

由于某种原因,这对我不起作用...

echo nl2br(stripcslashes($row["comments"]));

但这确实...

$comments = stripcslashes($row["comments"]);

$commentsWithBreaks = nl2br($comments);

echo $commentsWithBreaks;

答案 9 :(得分:0)

也不为我工作。我只是做了以下事情:

$ mensaje = str_replace(“ &#10;”,“ <br/>”,$ mensaje);

答案 10 :(得分:0)

我可以使用以下代码用<br>替换换行符:

str_replace(array("\r\n", "\r", "\n"), "<br>", "input");

(Windows计算机)

答案 11 :(得分:0)

这可能是一个解决方案,至少对我而言。

$message = str_replace("\\r\\n", "<br>", $message);

您可能会得到一个字符串,在其中转义了斜杠(即\\),而nl2br与\ n \ r一起使用,而不是\\ n \\ r

一旦您理解了这一点,解决方案就很简单了:)