データベースへのテキスト領域入力に改行を保存するための次のコードがあります。
$input = preg_replace("/(\n)+/m", '\n', $input);
データベースの入力を調べると、改行が実際に保存されます。
しかし、問題は、エコーアウトしたいときです。改行が出力に表示されません。改行を入力に保持し、エコーアウトするにはどうすればよいですか。使いたくない<pre></pre>
。
データベースへのテキスト領域入力に改行を保存するための次のコードがあります。
$input = preg_replace("/(\n)+/m", '\n', $input);
データベースの入力を調べると、改行が実際に保存されます。
しかし、問題は、エコーアウトしたいときです。改行が出力に表示されません。改行を入力に保持し、エコーアウトするにはどうすればよいですか。使いたくない<pre></pre>
。
の改行の実際のシーケンスを、改行ではなく$input
、リテラルの 2 文字のシーケンス\n
(バックスラッシュ + n) に置き換えています。これらは、データベースから読み取るときに改行に戻す必要があります。これらの実際の改行をデータベースに保持するつもりであると思われますが、代わりに二重引用符で囲まれた文字列を使用する必要があります...
$input = preg_replace('/(\n)+/m', "\n", $input);
最初の文字列区切り文字を一重引用符に、2 番目の文字列を二重引用符に置き換えたことに注意してください。\n
改行 (ASCII 10) を示すための正規表現の特別なシーケンスですが、同じことを示すための PHP の文字エスケープでもあります。この 2 つが競合することがあります。
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);