0
$t = '"Confidence isn\'t gained over time and practice. Confidence is gained when you realize you choose your own path, you choose to fall, you choose not to fall.

If you are afraid to fall you fall because you are afraid. Everything is choice." - Daniel ILabaca';
$order   = array("\r\n", "\n", "\r");
$text = str_replace($order, '<br/>', $t);

但在数据库中仍然是新行。

在插入之前我做htmlspecialchars(addslashes(trim($text)))

4

5 回答 5

2

你为什么不试试这个nl2br()功能呢?试试这个:

$text = nl2br($t);

而不是以下两行:

$order   = array("\r\n", "\n", "\r");
$text = str_replace($order, '<br/>', $t);
于 2013-01-12T12:37:08.187 回答
2

在数据库中保存数据时,只需要对其进行转义以防止 SQL 注入。无需执行 htmlspecialchars、nl2br、addlashes 等。您按原样保存用户数据。但要确保它的安全。在表示层显示这些数据时,您应该使用 htmlentities、nl2br、addlashes 等函数

于 2013-01-12T12:43:21.487 回答
0

如果您根本不想要任何换行符并且不想将它们转换为 HTML <br >,请在此处查看:从 html 源代码中删除所有换行符

于 2013-01-12T12:38:23.207 回答
0

您应该使用 PHP 内置方法 nl2br()

nl2br — Inserts HTML line breaks before all newlines in a string 

例子

<?php
    echo nl2br("Welcome\r\nThis is my HTML document", false);
?>

输出

Welcome<br>
This is my HTML document
于 2013-01-12T12:40:48.410 回答
0

而不是 $order 和 str_replace 位,只需尝试$text = nl2br($t);

于 2013-01-12T12:40:58.543 回答