如何使用nl2br()来处理带有'\ r \ n'的字符串?

时间:2011-03-07 23:31:15

标签: php mysql nl2br

我在表单提交时从admin到textarea检索存储在数据库中的产品描述值。当我从数据库中选择描述时,我得到$description = $row['description'];,我想在主页上回显$ description:echo nl2br($description);但是我看到"\r\n"个字符而不是新行。从我在这里和网上找到的,你的字符串必须在双引号之间使用,如下所示:

echo nl2br("Hello, \r\n This is the description");

现在,来自数据库的$description的值实际上是"Hello, \r\n This is the description"但是在我的脚本中我必须像这样使用它:

echo nl2br($description);

哪个不生成br,而是输出\r\n。那么,根据我的经验,我可以做什么,我不能在这里使用双引号。

4 个答案:

答案 0 :(得分:6)

可以将它们转换为各自的转义序列,然后再将字符串传递给nl2br(),如下所示:

$description = nl2br(str_replace('\\r\\n', "\r\n", $description));

但是,首先在数据库中执行的文字转义是什么?

答案 1 :(得分:1)

您将\r\n的文字值存储在数据库中,而不是它们代表的实际字符。

在您的数据库中验证这一点。如果您在说明字段中看到\r\n,那么当您存储数据时,您可能会转义反斜杠。

答案 2 :(得分:0)

您的文字似乎包含单个字符\r\n,并且不包含实际的换行符。因此,str_replace()应该完成工作:

echo str_replace('\r\n', '<br>', $description);

答案 3 :(得分:-2)

nl2br可以为“is_xhtml”提供第二个(可选)参数,它会将\r\n转换为<br>。只需将您的行更改为:

echo nl2br($description, TRUE);