PHP - 显示来自 MySQL 的数据时,新行不起作用


php- new lines don't work when displaying data from mysql

我有一个表单,用户可以在其中输入任何内容,例如,假设用户输入:

Hello World!
This is a new line.
This was written after two new lines.

用户使用表单提交的数据将插入到数据库中:

$data = mysqli_real_escape_string($dbc, $_POST['text']);
$sql = "INSERT INTO data (Data) VALUES ('$data')";
$exec = mysqli_query($dbc, $sql);
现在它存储在数据库中,

但是当我从数据库中获取文本以显示给用户时,它会显示:

Hello World! This is a new line. This was written after two new lines.

如您所见,新行将被忽略。我还想显示换行符。

我试过了:

$data = mysqli_real_escape_string($dbc, str_replace(''n', '<br>', $_POST['text']));

但这也行不通。显示来自 mysql 的数据时如何显示换行符?

最好将用户输入原封不动地放入数据库中(当然,转义除外(,以防您希望查询用户输入,或稍后更改显示行为。 也就是说,在构建页面并显示数据时,请使用

echo nl2br(htmlspecialchars($row['text'], ENT_QUOTES));

nl2br()将所有"'r'n""'n"转换为<br />,以便它很好地显示。 htmlspecialchars()将用户最初键入到字段中的任何特殊字符转换为正确的 HTML 转义序列。

您的

代码将起作用,但您的'n应用双引号而不是单引号括起来。 单引号字符串忽略 PHP 中的转义序列。 但是,如图所示,已经存在用于完成此操作的内置函数。

我相信你想要nl2br. http://php.net/manual/en/function.nl2br.php str_replace不起作用,因为您需要双引号中的'n。就像您正在寻找文字"'"一样。

$data = mysqli_real_escape_string($dbc, nl2br($_POST['text']));