Вопрос

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

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

Это было полезно?

Решение

  • \n это разрыв строки в Linux / Unix.
  • \r является классическим переносом строки в Mac OS (не OS X).Mac OS X использует вышеупомянутый unix \n.
  • \r\n это разрыв строки Windows.

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

Другие советы

Используйте 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");
    }
}

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

  • , или символ ASCII с десятичным кодом 13, называется CR после "возврата каретки".
  • , или символ ASCII с десятичным кодом 10, называется "новая строка", или LF после "перевода строки".

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

Для 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 ".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top