保存换行符(在数据库中)


Save line breaks (in database)

在PHP中是否有可能将文本区中的新行保存为sql数据库?

我的意思是不输入像br ?

这样的html命令

如果没有,这里是怎么做的?我怎样才能把它安装到我的程序里呢?

谢谢你的帮助!

$descriptionraw = mysqli_real_escape_string($conn, $_POST['setdescription']);
$description = nl2br($descriptionraw);

这个问题的前提是有缺陷的,因为换行符已经存储在数据库中了。
至少只要在保存输入之前没有删除它们,即

问题应该是如何在HTML页面中显示换行符,为此您有几个方法。
  • 在输出周围使用<pre>标记。这将导致文本以格式显示,因此包含换行符作为实际内容。这样做不好的一面是,文本不会正常中断,因此可以(并且将)打破页面的自然流程。
  • 或使用nl2br()或自定义nl2p()函数,在向浏览器回显内容时。这会将换行符转换为<br>(或<p>)标记,并遵循站点布局的正常流程。这使得它成为推荐的方法。

PS:这行错了:

 $description = nl2br($descriptionraw);

这是将output格式化为html兼容的查看器的函数,数据库不是。在将内容保存到数据库之前使用nl2br()和类似的函数只会让您感到头痛,特别是如果您想要在不支持处理HTML代码的环境中查看数据。(如本地MySQL客户端)

快速和肮脏的例子,使用PDO:首先保存数据:

$input = filter_var ($_POST['input'], FILTER);
$stmt = $db->prepare ("INSERT INTO `table`(`input`) VALUES (:data)");
$stmt->exec (array (':data' => $input));

然后显示:

$output = '';
$res = $db->exec ("SELECT `input` FROM `table`");
foreach ($res->fetchArray () as $row) {
    $output .= nl2br ($row['input']);
}
echo $output;

用户php函数nl2br

echo nl2br("This'r'nis'n'ra'nstring'r");