- ベストアンサー
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」では、行と行の間に一行空白ができてしまいますが? <私の理解終了> お分かりの方おられましたら、私の理解が正しいか判定をお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
えっと.... PHP は使っていないのですが, RFC2822 による仕様と PHP の mail 関数の仕様で混乱してるような気がします. [RFC2822] RFC2822 では, 行末を \r\n (CRLF: 0d0a) と定義しています. [PHP] PHP の mail 関数で送信する場合, 送信するメッセージの改行コードは \n (LF: 0a), 追加ヘッダの改行コードは \r\n だそうです. \n で空行が空いてしまう理由はよくわかりません.
その他の回答 (2)
- JaritenCat
- ベストアンサー率37% (122/322)
PHPのmail関数は、変な実装がされているらしくて、ヘッダー部の改行は「\r\n」で、本文の改行は「\n」でないとだめとか。。 一度お使いのバージョンのPHPのマニュアルを確認された方がよろしいかと思います。
お礼
JaritenCatさん ご回答、ありがとうございました。 了解しました。
補足
JaritenCatさん では、PHP の mail 関数で送信する場合, 送信するメッセージ内では「\r」は全く使用しないものなのですか?もし使用する場合、どのような時に使用するのでしょうか? よろしくお願いします。
- SAYKA
- ベストアンサー率34% (944/2776)
windowsのテキストの改行 → \r\n macintoshのテキストの改行 → \r unixのテキストの改行 → \n mailを吐くサーバのOSによって違うけれど大抵unixに合わせてあると思うよ。 サーバもサービスもなんもかんもwindowsだと\r\nかもしれ 。
補足
SAYKAさん ご回答、ありがとうございました。 その1: >mailを吐くサーバのOSによって違うけれど大抵unixに合わせてあると思うよ。 unixで「\r\n」とするとうまく改行されないのでしょうか? その2: メッセージの行間に間をあけたくない場合、\r(復帰)で改行すればよいのでしょうか?
お礼
Tacosanさん では、PHP の mail 関数で送信する場合, 送信するメッセージ内では「\r」は全く使用しないものなのですか?もし使用する場合、どのような時に使用するのでしょうか? よろしくお願いします。
補足
Tacosanさん ご回答、ありがとうございました。 了解しました。