在PHP中是否有可能将文本区中的新行保存为sql数据库?
我的意思是不输入像br ?
这样的html命令如果没有,这里是怎么做的?我怎样才能把它安装到我的程序里呢?
谢谢你的帮助!
$descriptionraw = mysqli_real_escape_string($conn, $_POST['setdescription']);
$description = nl2br($descriptionraw);
这个问题的前提是有缺陷的,因为换行符已经存储在数据库中了。
至少只要在保存输入之前没有删除它们,即
- 在输出周围使用
<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");