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