Подтвердить что ты не робот

Переходы PHP Echo Line

Какая разница между \n и\r (я знаю, что это имеет какое-то отношение к ОС) и какой лучший способ повторить разрыв строки, который будет работать на кросс-платформе?

EDIT: В ответ на Jarod я буду использовать ths, чтобы повторить разрыв строки в файле журнала .txt, хотя я уверен, что буду использовать его в будущем для такие вещи, как эхо HTML makup на странице.

4b9b3361

Ответ 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" .