Простой вопрос …
Я видел, как люди говорили мне использовать «\ 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)
Я в замешательстве, но ясно, что это имеет какое-то значение, потому что с одним, мои заголовки работали, а с другим они только иногда работают.
\ 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";
В соответствии с RFC 821 (протокол SMTP) концы строк всегда должны быть \r\n
( <CR><LF>
) в заголовках и контенте почты, но на практике это не имеет значения, так как большинство почтовых серверов обрабатывают все три типа (предположительно, некоторые старые UNIX-файлы фактически задыхаются от \r\n
но не \n
).
В дополнение к ответу Yada, здесь объясняется запись в блоге: https://blog.codinghorror.com/the-great-newline-schism/
[Обновление 2017-05-24: Исправлена ссылка]