回答編集履歴

1 typo修正

退会済みユーザー

退会済みユーザー

2019/01/12 19:21  投稿

フォームで入力された改行コードをそのままデータベースに保存すればいいのに。
`nl2br()`はthmlコード出力する直前で使うべきです。
`nl2br()`はhtmlコード出力する直前で使うべきです。
もしも、データベースに改行コードをそのまま保存したくないのであれば、
例えば
```
$post = str_replace(array("\r\n", "\r", "\n"), '<<改行>>', $post);
```
みたいにでも書けば改行コードをフォーム上では入力されない文字列`'<<改行>>'`に置き換えることで、
回避することができます。
この場合、textareaに出力するときには逆に変換する必要が生じます。
この場合、textareaに出力するときには逆に変換する必要が生じます。
---
もしかして、
データベース上に<br>つきとなしが混在していて、
どちらでも適切にtextareaに反映させたいのであれば、
そんなことを考えるよりもデータベース上のデータを修正してしまって、
正しい簡単な処理で動くようにしたほうが良いです。
影響があるレコード数が数万とかあるなら別ですが、
10行や100行くらいであれば
システムを止めて、テーブルのデータを絞り込んで編集する、システムを再開する、
くらいの対応で、
php上に無駄なコードを加えずに済みます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る