4

管理パネルで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]

次の行が出力に表示されるように、DBに保存されました。しかし、私はDBに次のように保存したいと思います。

    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で既に追加されているフィールドに2つの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);

ckeditorがtextareaで使用されている場合、管理者承認フォームでは処理は使用されません。DBからのテキスト出力は、ckeditorの1行に改行なしで表示されます。このフォームでの出力中にnl2brを使用すると機能しますが、ckeditorを介して投稿された以前のテキストにダブルBRが追加されます。

$content = preg_replace("/\r\n|\r/", "<br />", $content);同様の質問でstackoverflowの誰かが提案したようにも試しました

plsは私にこの問題のためのいくつかの関数を提案します。

また、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 に答える