dポイントプレゼントキャンペーン実施中!

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

調べた所、IE10の特有の問題で、改行が本来「0x0d,0x0a」に
したいところ、「0x0a,0x0a」になってしまうようです。
http://answers.microsoft.com/ja-jp/ie/forum/ie10 …

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

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

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

A 回答 (2件)

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



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

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

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

確かに判断が難しそうですね。
WRAP属性をやめられないかなどの観点からも、再度検討してみます。
ありがとうございました。

お礼日時:2013/05/29 12:41

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



RTFM.
http://www.php.net/manual/ja/language.types.stri …

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

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

でいいです。
    • good
    • 0
この回答へのお礼

なるほど、単純に¥n¥rで良かったのですね。
ご教授ありがとうございました。

お礼日時:2013/05/29 12:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!