別のフォームから送信したテーブルから取得したテキストエリアにデータを表示しようとしています。新しい行が入力されると、問題が発生します。
テキストエリアに表示されるデータは次のとおりです
lin1\r\nlin2
それは次のようになるはずです
lin1
lin2
nl2br を試しましたが、期待どおりに動作しません。どうすれば物事を最適化できますか。ありがとう
stripcslashes()
この問題は、データを出力するときに使用して解決できます。
stripslashes()
上記の方法は、この場合に機能しない方法とは異なることに注意してください。
使用してみnl2br
ましたが、それでも十分ではありませんでした。
これはよくある質問で、最も一般的な答えは ln2br または str_replace です。
ただし、これは不要なコードを作成しているだけです。
実際には、問題はほとんどの場合、データを表示する前に mysql エスケープ関数を介して実行したことです。おそらく、あなたがそれを保存している最中だったのでしょう。代わりに、保存のためにデータをエスケープしますが、エスケープされていないバージョンを表示します。
挿入/更新ステートメントで引用符を使いすぎます
あなたの場合、この問題は次のことで解決できます
<?php
$str = 'lin1\r\nlin2';
$solved_str = str_replace(array("\\r","\\n"), array("\r","\n"), $str);
var_dump($str,$solved_str);
ただし、オーバークォーテーションエスケープシンボルの挿入/更新ステートメントを確認する必要があります
"\r\n" のように \r\n には二重引用符を使用することをお勧めします。一重引用符で正しく機能したことはありません。