• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:改行されても空白がずれてしまいます)

改行されても空白がずれてしまう問題について

このQ&Aのポイント
  • phpとmysqlを使用して掲示板のような機能を作っています。TEXTAREAフォームに改行して文字列を入力し、DBにINSERTで追加します。表示させるときにSELECTして、nl2br()を使って改行を表示させますが、空白(スペース)がずれてしまう現象が発生しています。
  • DBにINSERTするとき、DBから取り出すとき、取り出して表示させるとき、どの段階でずれるのか特定できていません。対処方法を教えていただきたいです。
  • 表示の際に空白がずれる原因は、改行コードが異なるためです。TEXTAREAフォームでは改行コードがCR+LF( )となっているのに対し、DBに保存された文字列はLF( )のままです。そのため、DBから取り出して表示させるときに改行が正しく表示されず、空白がずれる現象が起きています。対処方法としては、表示の際に改行コードを正しく置換する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.1

おそらくechoで出力されたページのHTMLソースを開いてみると 入力したとおり17:00~23:00の前に空白が出力されているのではないかと思います。 (もし出力されてなかったらごめんなさい。以下は無視して次の回答者をお待ちください) HTMLは連続した空白をひとつの空白として表示するようになっています。 空白を空白として表示するには (1)空白を「&nbsp;」「&ensp;」「&emsp;」「&thinsp;」などに変換する。 (2)<textarea>タグ内に出力する。 (3)<pre>タグ内に出力する。 などがあると思います。 (1)は空白の幅がうまいことあわないとやはりずれるので面倒かと思います。 (2)はtextareaの枠が気にかかるかもしれません。 (3)が一番無難かと思います。 ちなみに(2)と(3)は改行を改行として扱ってくれるのでnl2br()による変換はいりません。

n1079
質問者

お礼

(3)でうまく空白も表示できるようになりました!(フォントが変わった気もしますが・・) ありがとうございました!

その他の回答 (1)

回答No.2

こういう時なんでみんなbr要素やpre要素使いたがるんだろ。 white-spaceプロパティがあるのに… http://www.w3.org/TR/2010/WD-css3-text-20101005/#white-space

n1079
質問者

お礼

CSSを使ったことはありませんでしたが、white-spaceプロパティで何とかできました。 ありがとうございました!

関連するQ&A