PHP разница между \ r \ n и \ n - PullRequest
17 голосов
/ 22 января 2010

Простой вопрос ...

Я видел, как люди говорили мне использовать "\ r \ n" в разных местах, а другие говорили мне, чтобы я использовал "\ n" в одном и том же месте. Я уверен, что один прав, а другой неправ. Пример - при разработке заголовков mail ():

Урок № 1:

//define the headers we want passed. Note that they are separated with \r\n 
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com"; 
//add boundary string and mime type specification 
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 

Урок № 2 (обратите внимание на аргумент заголовка):

mail($to, $subject, $body, 
    "From: " . $from . "\n" . 
    "bcc: " . $bcc . "\n" . 
    "MIME-Version: 1.0\n" . 
    "Content-Type: multipart/alternative;\n" . 
    "     boundary=" . $mime_boundary_header)

Я в замешательстве, но, очевидно, в этом есть какая-то разница, потому что с одним мои заголовки работали, а с другим они только иногда работают.

Ответы [ 3 ]

23 голосов
/ 22 января 2010

\ r \ n - символы конца строки для систем Windows.

\ n - символ конца строки для систем UNIX.

Эти символы невидимы. Исходя из собственного опыта, \ n обычно тоже подходит для Windows.

Некоторые предпочитают использовать константу PHP_EOL вместо этих символов для переносимости между платформами.

echo 'hi' . PHP_EOL;
echo "hi\n";

$headers = "From: webmaster@example.com" . PHP_EOL 
           . "Reply-To: webmaster@example.com"; 
6 голосов
/ 22 января 2010

Согласно RFC 821 (протокол SMTP), окончания строк всегда должны быть \r\n (<CR><LF>) в заголовках и содержимом почты, но на практике это не должно иметь значения, как большинство почтовых серверов обрабатывать все три типа окончаний строк правильно (предположительно, некоторые старые UNIX-версии фактически задыхаются на \r\n, но не \n).

5 голосов
/ 22 января 2010

В дополнение к ответу Яды есть поясняющая запись в блоге: https://blog.codinghorror.com/the-great-newline-schism/

[Обновление 2017-05-24: Исправлена ​​ссылка]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...