4

我在管理面板中使用 ckeditor,但在用户提交表单中使用简单的文本框,以便用户可以输入文本并提交。问题是当用户使用换行符在 textarea 中输入文本时,它会在 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 来处理内容。

4

2 回答 2

11

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

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

或者:

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

祝你好运。

于 2012-10-10T15:06:00.043 回答
6

您需要在需要时使用 nl2br 来显示值,而不是保存它。

于 2012-10-10T15:00:56.383 回答