Разрывы строк PHP Echo
-
05-07-2019 - |
Вопрос
В чем разница между и (я знаю, что это как-то связано с операционной системой), и каков наилучший способ повторить перенос строки, который будет работать на разных платформах?
Редактировать: В ответ на 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!