• ベストアンサー

RE:\r\nと\nの違い?

下記スレッド http://oshiete1.goo.ne.jp/qa4137451.html で以下のような質問をしていたのですが、 <質問開始> よくメールフォームの本文部分やヘッダー部分の改行などで\r\n又は\nが使用されていますが、\r\nと\nは何が違うのでしょうか? どちらも通常の改行のように思えますが。 <質問終了> 途中で質疑応答が途切れてしまいました。 上記の質問への回答から、私の理解は以下のようになりますが、私の理解は正しいのでしょうか? <私の理解開始> TinyPineさん ご回答、ありがとうございました。 つまり、PHPにおけるmail関数のメッセージ組み立て部分では、改行はつねに「\n」ではなく、「\r\n」で記述するべきということですか? また、PHPにおけるmail関数のメッセージ組み立て部分で、メッセージの行間に間をあけたくない場合、\r(復帰)で改行すればよいのでしょうか?「\r\n」又は「\n」では、行と行の間に一行空白ができてしまいますが? <私の理解終了> お分かりの方おられましたら、私の理解が正しいか判定をお願いします。

  • PHP
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

えっと.... PHP は使っていないのですが, RFC2822 による仕様と PHP の mail 関数の仕様で混乱してるような気がします. [RFC2822] RFC2822 では, 行末を \r\n (CRLF: 0d0a) と定義しています. [PHP] PHP の mail 関数で送信する場合, 送信するメッセージの改行コードは \n (LF: 0a), 追加ヘッダの改行コードは \r\n だそうです. \n で空行が空いてしまう理由はよくわかりません.

参考URL:
http://jp2.php.net/manual/ja/function.mail.php
kitty1000
質問者

お礼

Tacosanさん では、PHP の mail 関数で送信する場合, 送信するメッセージ内では「\r」は全く使用しないものなのですか?もし使用する場合、どのような時に使用するのでしょうか? よろしくお願いします。

kitty1000
質問者

補足

Tacosanさん ご回答、ありがとうございました。 了解しました。

その他の回答 (2)

回答No.3

PHPのmail関数は、変な実装がされているらしくて、ヘッダー部の改行は「\r\n」で、本文の改行は「\n」でないとだめとか。。 一度お使いのバージョンのPHPのマニュアルを確認された方がよろしいかと思います。

kitty1000
質問者

お礼

JaritenCatさん ご回答、ありがとうございました。 了解しました。

kitty1000
質問者

補足

JaritenCatさん では、PHP の mail 関数で送信する場合, 送信するメッセージ内では「\r」は全く使用しないものなのですか?もし使用する場合、どのような時に使用するのでしょうか? よろしくお願いします。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

windowsのテキストの改行 → \r\n macintoshのテキストの改行 → \r unixのテキストの改行 → \n mailを吐くサーバのOSによって違うけれど大抵unixに合わせてあると思うよ。 サーバもサービスもなんもかんもwindowsだと\r\nかもしれ  。

kitty1000
質問者

補足

SAYKAさん ご回答、ありがとうございました。 その1: >mailを吐くサーバのOSによって違うけれど大抵unixに合わせてあると思うよ。 unixで「\r\n」とするとうまく改行されないのでしょうか? その2: メッセージの行間に間をあけたくない場合、\r(復帰)で改行すればよいのでしょうか?

関連するQ&A

  • RE:\r\nと\nの違い?

    下記スレッド http://oshiete1.goo.ne.jp/qa4126744.html で以下のような質問をしていたのですが、 <質問開始> よくメールフォームの本文部分やヘッダー部分の改行などで\r\n又は\nが使用されていますが、\r\nと\nは何が違うのでしょうか? どちらも通常の改行のように思えますが。 <質問終了> 途中で質疑応答が途切れてしまいました。 上記の質問への回答から、私の理解は以下のようになりますが、私の理解は正しいのでしょうか? <私の理解開始> こちらの理解からすると、「\r\n」と「\n」はWindowsにおいては同じ意味。ただし、OSがUnixの場合も考え、「\n」よりは「\r\n」の方がよいということでしょうか? また、「\r\n」と「\n」は改行で、「\r」は復帰。 <私の理解終了> お分かりの方おられましたら、私の理解が正しいか判定をお願いします。

    • 締切済み
    • PHP
  • \r\nと\nの違い?

    よくメールフォームの本文部分やヘッダー部分の改行などで\r\n又は\nが使用されていますが、\r\nと\nは何が違うのでしょうか? どちらも通常の改行のように思えますが。 よろしくお願いします。

    • 締切済み
    • PHP
  • perlで、[ \r\n , \n ]の意味は?

    シンプルなCGI掲示板の勉強中ですが、 $message =~s/[ \r\n , \n ]/<br \/>/g; となっており、 これは改行文字を<br />に置き換えるのだそうですが、 [ \r\n , \n ]の部分というのはどういった意味でしょうか。 [ abc ]だと、a,b,cのうちどれか1文字は入っていれば良いですよね。 [ ]に「,」が入るとよく分からなくなります。 お分かりの方、教えてくださいませんか。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • (php) メールの改行コードについて

    phpでプログラミング中です。 メールを送信する際に 、メッセージ中に改行コードを入れたいのですが 思ったように改行してくれません。 (メールを送信はRestAPIを使って行っていますので、詳しくはわかりません) 実際には、思ったとおりに改行してくれていたのですが、そのRestAPIをバージョンアップしたら、改行されなくなってしまいました。 エディタ上での改行、 \n \r \r\n 全て試したのですが、  エディタ上での改行では、改行されず、 \r、\n、\r\n、全て2行改行になってしまいます。 PHP_EOLも使ってみましたが、改行されませんでした。 見た目、改行されているのはどうも、そのAPI自身が 70文字を超えたら改行しているように見えます。 他に改行するコード、改行する方法はありますでしょうか? 何でも試したいのです。 APIの開発元に聞いたり、バージョンアップの内容がわかればよいのでしょうが それを確認することは出来ない状態です。 何故出来ない? って言われそうですが。すみません。。。

    • 締切済み
    • PHP
  • 「\r」は全く使用しないものなのですか?

    http://oshiete1.goo.ne.jp/qa4141203.html 上記スレッドより部分的に未解答の質問を抜き取り、ここで質問しています。 以下質問: PHP の mail 関数でメールを送信する場合, 送信するメッセージ内では「\r」は全く使用しないものなのですか?もし使用する場合、どのような時に使用するのでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • ms_send_mail関数で改行(\n)すると本文に空行が出る

    始めまして。PHP初心者です。 現在PHP5でのms_send_mail関数を使ってメール送信を行う携帯向けページを制作しています。 送信ページでshift_jisへの文字エンコードも問題なく完了し、長い文章も無事に送信・受信していますが、 「\n」を使って改行を命令した部分に受信側で一行分の空行が入ってしまいます。 例えば送信メールの本文に --------------------------------- あいうえお \n かきくけこ \n さしすせそ \n --------------------------------- と記述し、メール送信。それを受信側で見ると ---------------------------------- あいうえお かきくけこ さしすせそ ---------------------------------- と‥行の間に空行が一行入ってしまいます。理想としては ---------------------------------- あいうえお かきくけこ さしすせそ ---------------------------------- と言う風に出力したいんですが‥‥ gooも含め半日ほどネット上を調べたのですが、空行を消す(または入れない)方法がどうしても見つかりません。 この空行を消す方法をご存知のお方がいらっしゃいましたらご教授願えませんでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • mysql_real_escape_stringについて\r\nが付くのは?

    $sql = INSERT INTO users (logid, passwd) VALUES ( "'" . mysql_real_escape_string($_POST['id']) "','" . mysql_real_escape_string($_POST['pas']) . "';" とすると全POSTデータの先頭に「\r\n」が付与されてしまいます。 INSERT INTO users (iogid, passwd) VALUES ('\r\n 入力されたID', '\r\n 入力されたパス') こんな感じになってしまいます。 SQL実行時にデータベースに入ってしまっているのか、 phpMyAdminで確認すると、文章内に改行が入ってしまっているみたいで、表のレイアウトがガタガタになっています。 SQLインジェクション対策に必要だと参考書には表記されているのですが、あまりにデータベースが見にくいので、私の使い方が間違っている様な気がします。 (1)\r\nが先頭に付与されるのは正しいのでしょうか? (2)データベースにSQLで\r\nをINSERTしると、データも\r\nが入ってしまうのでしょうか? (3)PHP + MySQLでSQLインジェクション関数はmysql_real_escape_stringだけなのでしょうか? なにぶん超初心者なので、ご教授の程よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのヒアドキュメントでは、\はエスケープされない?

    PHPのメール関数のメッセージ組み立て部分で使用しているヒアドキュメント内で¥マークを出力したい場合、「\」と記述するとエラーになってしまいます(「\\」と記述すると、ちゃんと「\」と表示されます。)。 PHPのヒアドキュメントでは、\はエスケープされないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • mb_send_mailで送られたメールに改行コードが入る。

    PHPのメールについてお伺いします。 php version 5.0.4 以下のようなメールを作成して、$mail1(送信先)と webmaster@hoge.comからの転送を受信しています。 ところが、$mail1の内容は改行コードは入った1行おきの表示になってしまいます。webmaster@hoge.comからの転送の方は改行されていません。 例) こんにちは。 お元気ですか。 と こんにちは。 お元気ですか。 の違いです。 改行しないようにしたいのですがどう直したらよいのでしょうか。ご教授ください。 メールソフトはqmailを使用しています。サーバーはFedora Core4です。 プログラムの1部 function sendMail($mail1,$subject,$textarea1) { $frmail = "From: xxxx@hoge.com \r\nbcc: webmaster@hoge.com"; $subject1 = mb_convert_encoding("問い合わせ","EUC-JP","auto"); $message = mb_convert_encoding(" 題目:{$subject} \n 内容: \n {$textarea1}","EUC-JP","auto"); mb_send_mail($mail1,$subject1,$message,$frmail); $mail(送信先)は関数の外部で設定しています。

    • ベストアンサー
    • PHP
  • エクセルの文字列の抽出方法について

    ★★エクセルの文字列の抽出方法について★★ 下記の「対象セルの内容」のような感じで1つのセルの中に複数行の文字列が入っているのですが、 下から3行とか4行とかを指定して文字列を抽出したいと考えています。 ■対象セルの内容 [改行] [改行] [改行] a/b/r1.php[改行] a/b/r2.php[改行] a/b/r3.php[改行] a/b/r4.php ■抽出したい値 a/b/r2.php[改行] a/b/r3.php[改行] a/b/r4.php 何かしらうまい方法はないでしょうか。 ご教授なにとぞよろしくお願いいたします。

専門家に質問してみよう