• ベストアンサー

おはよう御座います!SJISの改行について!

お世話になります。 自分のサイトに日記機能を付けたんですけど、改行出来なくて困ってます。 書いた日記を SJIS → EUC-JP に変換を行いDBへ格納しているんですけど、そこで携帯の改行を使っても改行されないまま格納されてしまいます。。。 携帯の改行を\nに変えるみたいな関数ってありますか! 色々見ましたけど分かりやすいのありませんでした。

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

  • ベストアンサー
回答No.2

php504さんの仰ってるのは、改行コードをHTMLに出力するときに、<br>に変換すればよいのではないかと仰ってるのではないかと。 textareaに改行付でデータをPOSTしても、その改行は「\n(または\r\nとか\r)」なのでありHTMLにそれをそのまま出力してもPCのブラウザでも改行されて表示はされません。 なので、 <?php //$dataには携帯で投稿された日記が含まれてる。 $data = str_replace(array("\n", "\r"), "<br>", $data); ?> として、HTMLに出力するときに改行コードを置換してやればよいです。

iinnffoo
質問者

補足

こんにちわ! 有り難う御座いますm(_ _)m☆ これは・・・。 POSTメソッドにだけ有効ですかっ! 確認→修正した場合にGETで受け渡した場合、改行消えててしまいます。。

その他の回答 (2)

回答No.3

>確認→修正した場合にGETで受け渡した場合、改行消えててしまいます。。 登録画面⇒確認画面⇒完了画面 という遷移を行っているんですよね? そこで確認画面から登録画面に戻す際に、GETで受け渡しを行っているのですか?それとも全ての遷移ででしょうか? そしてそれはformタグのmethodのところを「method="GET"」としているということでしょうか? 少々不明瞭な点が多くて、回答しづらいのですが、その前提で下記記述します。前提があっていないなら下記記載のものは読まずに、詳しい画面遷移を教えてください。 formタグでsubmitしたときに、GETメソッドを利用すると、通常ブラウザは、与えられた文字列をURLで利用できる文字列に変換してパラメータを渡します(URLエンコードというもの) それには改行が含まれていたら、改行部分を「%0D%0A」というような形式で変換がされます。(これはWindowsの場合で、%0Dが[\r]%0Aが[\n]です) ソレが行われていれば、PHPで$_GET変数で取得される文字はデコードされて、もとの改行に戻してくるはずです。 ソレが行われていないということですと、携帯電話のブラウザが改行を正常にエンコードしていないということも考えられます。 その場合はPOSTメソッドで送信を行ったほうが良いかと思います。

iinnffoo
質問者

補足

こんにちわ(・ω・) とても詳しい説明してくださりありがとうございます!! フォームメソッドはPOSTになっています(^-^)確認→修正画面の時にGETに変えてしまってます!! 確認→修正画面もPOSTにすべきなんですね!! 以外に難しいんですね。。。かしこまりました!! また一つ勉強になりました。ありがとうございましたっ(*^ー^)ノ♪

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

ウェブ上で改行させたいのなら<br>に変換すればいいのでは

iinnffoo
質問者

補足

それもそうなんですけれど・・。。・。。 段落で改行できたらいいなぁなんておもっていたのです。 今の若い人たちって改行好きですよね。。。 <BR>ではなるんですけれどそれだとふびんかなぁとおもいましたのです。

関連するQ&A