php - 在 SQL 中将换行符转换为 BR 后如何保存 Textarea 输入

标签 php sql textarea

我在管理面板中使用 ckeditor,但在用户提交表单中使用简单的文本框,以便用户可以输入文本并提交。问题是当用户在带有换行符的文本区域中输入文本时,它会像在 SQL 中一样保存。我想在 sql 中的每一行之后添加 BR。

例如用户提交:

    ![F.R.I.E.N.D.S.:
(F)ight for you.
(R)espect you.
(I)nvolve you.
(E)ncourage you.
(N)eed you.
(D)eserve you and
(S)tand by you.][1]![SCREENSHOT oF DB SAVE][2]

保存在数据库中,下一行显示在输出中。但我想在数据库中保存为:

    F.R.I.E.N.D.S.:<br />
(F)ight for you.<br />
(R)espect you.<br />
(I)nvolve you.<br />
(E)ncourage you.<br />
(N)eed you.<br />
(D)eserve you and<br />
(S)tand by you.

我使用 nl2br 但它不适用于用户提交表单如果我在管理处理表单上使用 nl2br 那么在那些已经用 ckeditor 添加的字段上它添加了两个 BR 标签。

用户提交表单使用的代码是:

<textarea name="content" id="content" cols="60" rows="10" class="span7"><?php if(isset($content)) { echo $content; } ?></textarea>

$content = trim($_POST["content"])
$content = mysql_real_escape_string($content);
$content = nl2br($content);

在 textarea 上使用 ckeditor 的管理员审批表上没有使用任何处理。来自 DB 的文本输出在 ckeditor 的单行中没有换行符。 如果我在此表单上输出时使用 nl2br,它可以工作,但会在通过 ckeditor 发布的早期文本上添加双 BR。

也试过$content = preg_replace("/\r\n|\r/", "<br />", $content);正如一些关于类似问题的 stackoverflow 的建议

请给我一些解决这个问题的函数。

还建议在插入 SQL 之前是否需要使用 htmlentities 或 stripslashes 等函数来处理内容。

最佳答案

只需替换新行\r\n,\r,然后修剪它。

$content = preg_replace("/\r\n|\r/", "<br />", $_POST["content"]);
$content = trim($content])

或者:

$content = nl2br($_POST["content"]);
$content = trim($content)

祝你好运。

关于php - 在 SQL 中将换行符转换为 BR 后如何保存 Textarea 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12822371/

相关文章:

php - 检查数据库中的现有条目或重新创建表?

sql - 如何创建在 Postgres 中创建表的 IF 语句?

sql - Oracle - 如何使用 NLSParams 使用 TO_CHAR 函数强制更改语言?

java - 是否有基于 Java SDK HTML 的文本区域插件

php - 从mysql中的表中获取最大值

php - mongoDB 以微秒为单位获取查询的执行时间

css - 隐藏 &lt;textarea&gt; 的 Angular

javascript - 当用户单击按钮(在光标位置)时,将一串文本添加到输入字段中

PHP - mysql_fetch_assoc 是否返回二维数组?

mysql - 返回零行,尽管 SQL 查询