Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用nl2br()处理带有“\r\n”的字符串?_Php_Mysql_Nl2br - Fatal编程技术网

Php 如何使用nl2br()处理带有“\r\n”的字符串?

Php 如何使用nl2br()处理带有“\r\n”的字符串?,php,mysql,nl2br,Php,Mysql,Nl2br,我在表单提交时通过textarea从管理员检索存储在数据库中的产品描述值。当我从数据库中选择描述时,我得到$description=$row['description'];我想在主页上像这样回显$description:echo nl2br$description;但我看到的是\r\n字符,而不是新行。根据我在这里和网上发现的情况,您的字符串必须在双引号之间使用,如下所示: echo nl2br("Hello, \r\n This is the description"); echo nl2b

我在表单提交时通过textarea从管理员检索存储在数据库中的产品描述值。当我从数据库中选择描述时,我得到$description=$row['description'];我想在主页上像这样回显$description:echo nl2br$description;但我看到的是\r\n字符,而不是新行。根据我在这里和网上发现的情况,您的字符串必须在双引号之间使用,如下所示:

echo nl2br("Hello, \r\n This is the description");
echo nl2br($description);
$description = nl2br(str_replace('\\r\\n', "\r\n", $description));
现在,数据库中$description的值实际上是Hello,\r\n这是描述,但在我的脚本中,我必须这样使用它:

echo nl2br("Hello, \r\n This is the description");
echo nl2br($description);
$description = nl2br(str_replace('\\r\\n', "\r\n", $description));

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

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


在数据库中验证这一点。如果在“描述”字段中看到\r\n,则在存储数据时可能是在逃避反斜杠。

文本似乎包含单个字符\、r、\、和n,而不包含实际的换行符。因此,stru_replace应完成以下工作:

echo str_replace('\r\n', '<br>', $description);
在通过nl2br传递字符串之前,可以将它们转换为各自的转义序列,如下所示:

echo nl2br("Hello, \r\n This is the description");
echo nl2br($description);
$description = nl2br(str_replace('\\r\\n', "\r\n", $description));

但是文字转义首先在数据库中做什么呢?

nl2br可以为is\u xhtml使用第二个可选参数,它将为您将\r\n转换为。只需将您的线路更改为:

echo nl2br($description, TRUE);

它是否与转义的反斜杠一起存储在\\r\\n中?nl2br应该可以在变量上正常工作。在插入数据库时,我应该如何处理$_POST['description'],以保持新行的完整性?谢谢。@Manny Calavera:如果你还没有使用textarea,你应该使用它。如果要确保\r\n始终成为真正的换行符,我想您可以在插入之前运行str\u replace,这样就不必在获取后执行此操作。可选参数默认为true。