• ベストアンサー
  • 暇なときにでも

改行コードの変換

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、サファリ などは試せますが、マックなどはどういった挙動をするのかも心配です。 ここら辺に詳しい方がおりましたら、アドバイスを頂けると助かります。宜しくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数1699
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.2
  • yambejp
  • ベストアンサー率51% (3827/7415)

>本当に改行が複数あった場合などは、どうなるのか? ユーザーが任意で複数入れた改行と、ブラウザの仕様で送られてくる複数の改行は 見分けがつけられないでしょうね エージェントをみて判断するとしても、微妙なモードによって違うのであれば なおさらです。 ポイントとしては ・そのモードを利用しない/させない ・IE10では不具合の可能性がある旨明示する などの対応しかないと思います もしくは仕様として、preg_replace("/\n+/","\n",$str)のような変換するなどして、 2回以上の改行を禁止にするという考え方もあります

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

その他の回答 (1)

  • 回答No.1
  • shimix
  • ベストアンサー率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) でいいです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • 改行コードを保存できない。

    <textarea wrap="hard" name="sentence" rows="3" cols="30"></textarea> このフォームで、入力したデータは、 PostgreSQLのテーブルに保存されるように構成しました。 フィールドは、"text"型です。 いざそれを、phpでHTMLに呼び出すと、改行文字は無視されます。 実際に、データベースを開くと、その値はこのようになっていました。 "ああああ・・あああ・・・・ああ" 改行コードはどうやら、"・"2個を改行1つと扱って保存しているようでした。 phpで、・・を含む値をHTML呼び出す時、 ・・を<BR>として呼び出して、改行してしまう技はないでしょうか?

  • CGIで改行タグを改行コードに変換ってできますか?

    CGIで改行タグを改行コードに変換ってできますか? $text =~ s/\r\n/<br>/g; $text =~ s/\r/<br>/g; $text =~ s/\n/<br>/g; で確認画面上で表示されるtextareaの文章は改行されるのですが、 届いたメールには<br>と表示されてしまって困ってます。 PHPでは変換できるみたいなのですが、perlでも出来るのでしょうか?

    • ベストアンサー
    • CGI
  • 改行コードについて

    HTMLフォームのテキストエリアで改行した場合の処理についてご質問します。 Windowsのローカル環境で試しています。 改行コードLFでPHPを作成しています。 ○改行コードの認識 LF(\n) Unix,Mac OS X CR(\r) Mac OS 9 CRLF(\r\n) ○テキストエリアからの入力値の処理 CRLF、CRをLFに変換しています。 $value= str_replace ("\r\n", "\n", $value); $value = str_replace ("\r", "\n", $value); このあとDBに値を格納しています。 ○出力の際の処理 DBから値を取得。 phpのprint関数で下記を出力。 <textarea >${value}</textarea> 上記処理で、ローカル、サーバともに正常に動作しています。 しかし改行コードがLF(\n)なのでCRLF(\r\n)のWindowsで表示したときには問題が起きそうな気がします(実際には正常に動作)。 なにかしっくりこなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Perlでの改行コードについて

    <textarea>に入力された値をPOSTで渡し、ポスグレに書き込み、それをHTML上で表示する処理をしているのですが。 textareaで改行を入力した場合に、 DB内に改行が登録されません。 例: *textareaのwrapはsoftに設定してあります。 あいうえおかきくけこ さしすせそ と入力すると。 DBには 「あいうえおかきくけこ さしすせそ」 と登録され 表示では「あいうえおかきくけこさしすせそ」と表示されます。 ソースでみると 「あいうえおかきくけこ さしすせそ」と表示されています。 改行コードの置換がされていないのだと思い INSERT前に s/\r\n/<BR>/g; s/\r/<BR>/g; s/\n/<BR>/g; を使い置換をすると DBには何も登録されません。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Windows標準機能での改行コード変換方法について

    いつも利用させて頂いております。 nopo3です。 掲題の通りなんですが、 Windows上で作成したファイル(SJIS/CRLF)の 文字コード、改行コードをEUC/LFに変換したいと 思っています。 フリーソフト等で変換をする事は可能ですが、 実際にWindows標準機能で変換する方法はあるのでしょうか? テキストをIEで開き、エンコードをすれば、文字コードは変換されるのですが、改行コードを変換することができませんでした。 スクリプトを組まないと駄目なんでしょうか? 御教授御願致します。

  • textareでの改行

    ホームページ上のtextareaで入力してもらった情報を取得するCGI(perl)スクリプトを書いています。流れとしては,フォーム上で入力した情報をCGIで取得→確認画面を表示→問題無ければメールフォームとして送信,となっています。 このスクリプト上で問題となっているのが,textareaでは自動的に改行処理(wrap=softと同じ?xhtmlで書いているので,wrap属性は指定していません。)するときに入力される改行コードと,入力者が意図的に入力する改行コードを判別出来ないということです。自動的に挿入される\n(0x0A)を削除しようとスクリプト上で, $text =~s/\r\n/\n/g; $text =~s/\r/\n/g; $text =~s/\n//g; と入れたところ,全ての改行コードが変換処理されてしまい,入力者が意図的に入れた改行コードまで処理されてしまいます。 スクリプト上,もしくはxhtmlと組み合わせて,自動的に挿入される改行コードだけを消去して,意図的に入力した改行コードだけを残す処理は出来ないものでしょうか? phpなどを使うと出来るようですが,ある程度perlのcgiで作成してしまったので,このままで出来ればと思っています。よろしくお願いします。

  • 改行コードの変換方法を教えて下さい

    IISで使用していたCGIをApacheに移植したところ、動きません。Windowsの改行コードをUNIXのそれに変換する必要があるらしいのですが、変換の方法が判りません。どなたかご教示をお願いいたします。

  • Macの改行コード

    Macで作ったテキストデータの改行コードをWindows(DOS)改行コードに変換するソフトってあるんでしょうか?

  • 改行コードを自動変換してくれるFTPクライアント

    テキストファイルをアップロードするときに、改行コードを自動変換してくれるFTPクライアントを探してます。 今まではFFFTPを使用していたのですが、このソフト、自動で改行コードを変換してくれないようです。 サーバーの漢字コードにEUCを選択し、転送モードをアスキーにして転送してみましたが、改行コードはCRLFのままでした。 テキストファイルのアップロードではFTPソフトが自動で改行コードを変換してくれるものだと思い込んでいたのですが。。。 やりたいことは、Windowsで作ったS-JIS/CRLFのテキストファイルを、漢字コードはS-JISのままで改行コードだけをLFのみに自動変換してLinuxサーバーにアップロードしたいのです。 質問としては、 (1), FFFTPで、自動で改行コードのみを変換し、漢字コードはそのままでアップロードする方法がありましたら教えてください。 (2), もし、(1)ができないようでしたら、他のソフトでお勧めがありましたら紹介してください。 できれば、FFFTPのように、ビューワにメモ帳など自分の好きなアプリケーションを指定できる機能があれば助かります。 宜しくお願いします。

  • フォームから入力された改行コードをbrにする方法

    掲示板を現在作成していて、投稿者が記入した改行が反映されないので、<textarea>から入力された改行コードを<br>タグに変換しようと思っています。 どなたかご存知の方、教えてください。

    • ベストアンサー
    • PHP