質問: 改行コードの変換 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、サファリ などは試せますが、マックなどはどういった挙動をするのかも心配です。 ここら辺に詳しい方がおりましたら、アドバイスを頂けると助かります。宜しくお願いします。
回答: >本当に改行が複数あった場合などは、どうなるのか? ユーザーが任意で複数入れた改行と、ブラウザの仕様で送られてくる複数の改行は 見分けがつけられないでしょうね エージェントをみて判断するとしても、微妙なモードによって違うのであれば なおさらです。 ポイントとしては ・そのモードを利用しない/させない ・ie10では不具合の可能性がある旨明示する などの対応しかないと思います もしくは仕様として、preg_replace("/\n+/","\n",$str)のような変換するなどして、 2回以上の改行を禁止にするという考え方もあります