解決済み

改行コードの変換

  • 暇なときにでも
  • 質問No.8109549
  • 閲覧数1658
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 83% (55/66)

TEXTAREAタグの属性wrapにhardを設定したHTMLがあります。
今まで問題はなかったのですが、Window8のIE10だと、なぜか
改行が倍になってしまいます。

調べた所、IE10の特有の問題で、改行が本来「0x0d,0x0a」に
したいところ、「0x0a,0x0a」になってしまうようです。
http://answers.microsoft.com/ja-jp/ie/forum/ie10-windows_8/%E5%86%8Die10-textarea/6ee92b5a-46dd-498d-83d8-eede6ec69864

そこで、データ受け側のPHPプログラムで、改行コードを0x0a,0x0aから0x0d,0x0a
にしたいと思っていますが、改行コードの変換の仕方がわかりません。
replaseとかだと、\nとか\r\nとかでしか変換した事がないので、0x0aとかの変換
の仕方がわかりません。

また、単純に0x0a,0x0aを0x0d,0x0aに変換すれば解決できるものなのかも疑問です。
本当に改行が複数あった場合などは、どうなるのか?
IE10以外のブラウザでは問題ないのか?です。
WindowsのPCはあるので、Windows版のIE10以外のIEやクローム、FireFox、サファリ
などは試せますが、マックなどはどういった挙動をするのかも心配です。

ここら辺に詳しい方がおりましたら、アドバイスを頂けると助かります。宜しくお願いします。

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

  • 回答No.2

ベストアンサー率 51% (3827/7415)

>本当に改行が複数あった場合などは、どうなるのか?

ユーザーが任意で複数入れた改行と、ブラウザの仕様で送られてくる複数の改行は
見分けがつけられないでしょうね
エージェントをみて判断するとしても、微妙なモードによって違うのであれば
なおさらです。

ポイントとしては
・そのモードを利用しない/させない
・IE10では不具合の可能性がある旨明示する
などの対応しかないと思います

もしくは仕様として、preg_replace("/\n+/","\n",$str)のような変換するなどして、
2回以上の改行を禁止にするという考え方もあります
お礼コメント
coogon21

お礼率 83% (55/66)

確かに判断が難しそうですね。
WRAP属性をやめられないかなどの観点からも、再度検討してみます。
ありがとうございました。
投稿日時 - 2013-05-29 12:41:41
感謝経済

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 54% (865/1590)

0x0dはCR("\r")、0x0aはLF("\n")です。

RTFM.
http://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.double

0x0a,0x0aを0x0d,0x0aにしたければ、

$str = str_replace("\n\n", "\r\n", $str)

でいいです。
お礼コメント
coogon21

お礼率 83% (55/66)

なるほど、単純に¥n¥rで良かったのですね。
ご教授ありがとうございました。
投稿日時 - 2013-05-29 12:39:59
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


感謝でトクする時代へ!感謝経済に参加しよう!

ピックアップ

ページ先頭へ