- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:改行されても空白がずれてしまいます)
改行されても空白がずれてしまう問題について
このQ&Aのポイント
- phpとmysqlを使用して掲示板のような機能を作っています。TEXTAREAフォームに改行して文字列を入力し、DBにINSERTで追加します。表示させるときにSELECTして、nl2br()を使って改行を表示させますが、空白(スペース)がずれてしまう現象が発生しています。
- DBにINSERTするとき、DBから取り出すとき、取り出して表示させるとき、どの段階でずれるのか特定できていません。対処方法を教えていただきたいです。
- 表示の際に空白がずれる原因は、改行コードが異なるためです。TEXTAREAフォームでは改行コードがCR+LF( )となっているのに対し、DBに保存された文字列はLF( )のままです。そのため、DBから取り出して表示させるときに改行が正しく表示されず、空白がずれる現象が起きています。対処方法としては、表示の際に改行コードを正しく置換する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おそらくechoで出力されたページのHTMLソースを開いてみると 入力したとおり17:00~23:00の前に空白が出力されているのではないかと思います。 (もし出力されてなかったらごめんなさい。以下は無視して次の回答者をお待ちください) HTMLは連続した空白をひとつの空白として表示するようになっています。 空白を空白として表示するには (1)空白を「 」「 」「 」「 」などに変換する。 (2)<textarea>タグ内に出力する。 (3)<pre>タグ内に出力する。 などがあると思います。 (1)は空白の幅がうまいことあわないとやはりずれるので面倒かと思います。 (2)はtextareaの枠が気にかかるかもしれません。 (3)が一番無難かと思います。 ちなみに(2)と(3)は改行を改行として扱ってくれるのでnl2br()による変換はいりません。
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
回答No.2
こういう時なんでみんなbr要素やpre要素使いたがるんだろ。 white-spaceプロパティがあるのに… http://www.w3.org/TR/2010/WD-css3-text-20101005/#white-space
質問者
お礼
CSSを使ったことはありませんでしたが、white-spaceプロパティで何とかできました。 ありがとうございました!
お礼
(3)でうまく空白も表示できるようになりました!(フォントが変わった気もしますが・・) ありがとうございました!