Intereting Posts

Переходы PHP Echo Line

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

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

  • \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"); } } 

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

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

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

Для PHP_EOL на PHP4 не требуется обратная совместимость.

Нужно исправить утверждение Мура о постоянной доступности PHP_EOL: «… объявлено с PHP 5.0.2».

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

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