Переходы PHP Echo Line
Какая разница между \n и\r (я знаю, что это имеет какое-то отношение к ОС) и какой лучший способ повторить разрыв строки, который будет работать на кросс-платформе?
EDIT: В ответ на Jarod я буду использовать ths, чтобы повторить разрыв строки в файле журнала .txt, хотя я уверен, что буду использовать его в будущем для такие вещи, как эхо HTML makup на странице.
Ответы
Ответ 1
-
\n
- это разрыв строки Linux/Unix.
-
\r
- классический перерыв строки в Mac OS (non-OS X). Mac OS X использует вышеупомянутый unix \n
.
-
\r\n
- разрыв строки Windows.
Обычно я использую \n
для наших Linux-систем, и в большинстве случаев приложения Windows работают с ним нормально.
Ответ 2
Используйте константу PHP_EOL
, которая автоматически устанавливается на правильный разрыв строки для операционной системы, в которой работает PHP скрипт.
Обратите внимание, что эта константа объявляется начиная с PHP 5.0.2.
<?php
echo "Line 1" . PHP_EOL . "Line 2";
?>
Для обратной совместимости:
if (!defined('PHP_EOL')) {
switch (strtoupper(substr(PHP_OS, 0, 3))) {
// Windows
case 'WIN':
define('PHP_EOL', "\r\n");
break;
// Mac
case 'DAR':
define('PHP_EOL', "\r");
break;
// Unix
default:
define('PHP_EOL', "\n");
}
}
Ответ 3
Ответ Jarod содержит правильное использование \r\n для разных ОС. Вот некоторая история:
- \r, или символ ASCII с десятичным кодом 13, называется CR после "возврата каретки".
- \n или символ ASCII с десятичным кодом 10, называется "новая строка" или LF после "line feed".
Терминология "возврат каретки" и "линия подачи" восходит к тому времени, когда вместо терминалов с монитором и клавиатурой использовались телетайпы. Что касается телетайпов или пишущих машинок, "возврат каретки" означал перемещение курсора и возврат к первому столбцу текста, в то время как "линия подачи" означала поворот ролика, чтобы перейти на следующую строку. В то время это различие имело смысл. Сегодня комбинации \n,\r,\r\n для представления конца строки текста полностью произвольны.
Ответ 4
Нет обратной совместимости, необходимой для PHP_EOL на PHP4.
Нужно скорректировать оператор Moore для постоянной доступности PHP_EOL: "... объявляется с PHP 5.0.2.".
Нет, это было с тех пор, как PHP 4.3.10. Любой, кто все еще работает чем-то меньшим, не должен быть в бизнесе. На сегодняшний день никто не должен использовать что-то меньшее, чем PHP 5!
Из руководства по PHP: "PHP_EOL Правильный символ" Конец строки "для этой платформы. Доступен с PHP 4.3.10 и PHP 5.0.2" .