0

ユーザーが入力した「入力」をデータベースに保存し、他のユーザーに表示するにはどうすればよいですか?

ユーザーの質問を保存し、次の関数を使用してユーザー データをサニタイズし、準備し、SQL コマンドを実行します。

 pg_escape_string
 pg_prepare
 pg_execute

htmlentitieswithを使用しENT_QUOTESて、データ HTML を変換します。この手順は、質問内の \n の形式と思われるすべての入力を削除します。

SO と同様の質問システムが必要です: 改行としてユーザーに二重入力のみを表示します。

4

2 に答える 2

7

を呼び出した後htmlentities()、 を呼び出しますnl2br()。Web ブラウザーは単純な改行文字を無視するため、改行文字を<br />要素に変換して表示させる必要があります。

nl2br— 文字列内のすべての改行の前に HTML 改行を挿入します

説明

string nl2br ( string $string [, bool $is_xhtml= true ] )
すべての改行の前に挿入された、<br />または挿入された 文字列を返します。<br>

例えば:

echo nl2br(htmlentities($input));

二重の改行のみを表示し、単一の改行を無視するには、代わりに、より洗練された文字列置換関数を使用できますpreg_replace

echo preg_replace('/\n\s*\n/', "<br />\n<br />\n", htmlentities($input));

ここ'/\n\s*\n/'では、改行の後に任意の量の空白が続き、その後に別の改行が続きます。<br />そのような部分文字列を 2 つの要素に置き換えます。単一の改行は無視されます。ユーザーが次のように入力した場合など、目に見えない余分なスペースやタブを無視するので、これも素晴らしいことです。

これは段落です。\n
かなり短いです。\n
<space><tab>\n
ここに別の段落があります。\n
それも短いです。

于 2009-08-22T01:16:00.863 に答える
3

<br>PHP の nl2br() 関数がこのトリックを実行し、\n 文字をhtml タグに変換できるようにする必要があります。

「改行を 2 回入力する」動作を有効にするには、正規表現を実行して、連続<br>するタグのすべてのペアを 1 つのタグに変換する<br>必要があります (テキストに対して nl2br() を実行する前に \n 文字を使用してこれを行うこともできます)。

于 2009-08-22T01:17:57.820 に答える