PHP Echo Line Breaks - PullRequest
       46

PHP Echo Line Breaks

42 голосов
/ 01 ноября 2008

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

РЕДАКТИРОВАТЬ: В ответ на Джарод, я буду использовать это, чтобы повторить разрыв строки в файле журнала .txt, хотя я уверен, что буду использовать его в будущем для вещей например отображение HTML-макета на странице.

Ответы [ 4 ]

122 голосов
/ 01 ноября 2008

Используйте константу 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");
    }
}
44 голосов
/ 01 ноября 2008
  • \n - разрыв строки в Linux / Unix.
  • \r - это классический разрыв строки в Mac OS (не OS X). Mac OS X использует вышеуказанный Unix \n.
  • \r\n - разрыв строки в Windows.

Я обычно просто использую \n в наших системах Linux, и большинство приложений Windows справляются с этим нормально.

31 голосов
/ 01 ноября 2008

Ответ Джарода содержит правильное использование \ r \ n в различных ОС. Вот немного истории:

  • \ r, или ASCII-символ с десятичным кодом 13, называется «CR» после «возврата каретки».
  • \ n, или символ ASCII с десятичным кодом 10, называется «новой строкой», или LF после «перевода строки».

Термины «возврат каретки» и «перевод строки» восходит к тому времени, когда вместо терминалов с монитором и клавиатурой использовались телетайпы. Что касается телетайпов или пишущих машинок, «возврат каретки» означал перемещение курсора и возврат к первому столбцу текста, тогда как «перевод строки» означал вращение ролика, чтобы попасть на следующую строку. В то время различие имело смысл. Сегодня комбинации \ n, \ r, \ r \ n для обозначения конца строки текста совершенно произвольны.

7 голосов
/ 13 апреля 2012

Нет обратной совместимости, необходимой для PHP_EOL на PHP4.

Необходимо исправить утверждение Мура о постоянной доступности PHP_EOL: "... объявлено начиная с PHP 5.0.2.".

Нет, он существует с PHP 4.3.10. Любой, кто все еще управляет чем-то меньшим, чем это, не должен быть в любом случае. На сегодняшний день никто не должен использовать что-то меньшее, чем PHP 5!

Из руководства PHP: «PHP_EOL Правильный символ« Конец строки »для этой платформы. Доступно с PHP 4.3.10 и PHP 5.0.2».

...