6

データベースへのテキスト領域入力に改行を保存するための次のコードがあります。

$input = preg_replace("/(\n)+/m", '\n', $input);

データベースの入力を調べると、改行が実際に保存されます。
しかし、問題は、エコーアウトしたいときです。改行が出力に表示されません。改行を入力に保持し、エコーアウトするにはどうすればよいですか。使いたくない<pre></pre>

4

2 に答える 2

5

の改行の実際のシーケンスを、改行ではなく$input、リテラルの 2 文字のシーケンス\n(バックスラッシュ + n) に置き換えています。これらは、データベースから読み取るときに改行に戻す必要があります。これらの実際の改行をデータベースに保持するつもりであると思われますが、代わりに二重引用符で囲まれた文字列を使用する必要があります...

$input = preg_replace('/(\n)+/m', "\n", $input);

最初の文字列区切り文字を一重引用符に、2 番目の文字列を二重引用符に置き換えたことに注意してください。\n改行 (ASCII 10) を示すための正規表現の特別なシーケンスですが、同じことを示すための PHP の文字エスケープでもあります。この 2 つが競合することがあります。

于 2012-07-10T12:31:05.543 に答える
3

PHPには解決策があると思います:

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

編集:正しく機能させるには、CR / LF を置き換える必要がある場合があります。

// Convert line endings to Unix style (NL)
$input = str_replace(array("\r\n", "\r"), "\n", $input);

// Remove multiple lines
$input = preg_replace("/(\n)+/m", '\n', $input);

// Print formatted text
echo nl2br($input);
于 2012-07-10T12:42:11.567 に答える