Когда я использую PHP-константу "PHP_EOL"? - PullRequest
333 голосов
/ 24 сентября 2008

Когда стоит использовать PHP_EOL?

Я иногда вижу это в примерах кода PHP. Это обрабатывает проблемы конечной линии DOS / Mac / Unix?

Ответы [ 18 ]

2 голосов
/ 18 июля 2014

У меня есть сайт, на котором скрипт-сценарий записывает новую строку текста в текстовый файл после действия пользователя, который может использовать любую ОС.

Использование PHP_EOL в этом случае не кажется оптимальным. Если пользователь работает в Mac OS и пишет в текстовый файл, он поставит \ n. При открытии текстового файла на компьютере с Windows он не показывает разрыв строки. По этой причине я использую "\ r \ n" вместо этого, который работает при открытии файла в любой ОС.

1 голос
/ 22 июня 2009

Удобно с error_log (), если вы выводите несколько строк.

Я обнаружил, что многие операторы отладки выглядят странно на моей установке Windows, так как разработчики предполагали окончание Unix при разбивании строк.

1 голос
/ 13 марта 2013

Вы пишете код, который преимущественно использует одинарные кавычки.

echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;  
echo 'this other $one'."\n";
0 голосов
/ 10 марта 2019

В некоторых системах может быть полезно использовать эту константу, потому что, например, если вы отправляете электронное письмо, вы можете использовать PHP_EOL, чтобы межсистемный скрипт работал на большем количестве систем ... но даже если это полезно когда-нибудь, вы может найти эту константу неопределенной, современный хостинг с последним механизмом php не имеет этой проблемы, но я думаю, что хорошо бы написать немного кода, который спасет эту ситуацию:

<?php
  if (!defined('PHP_EOL')) {
    if (strtoupper(substr(PHP_OS,0,3) == 'WIN')) {
      define('PHP_EOL',"\r\n");
    } elseif (strtoupper(substr(PHP_OS,0,3) == 'MAC')) {
      define('PHP_EOL',"\r");
    } elseif (strtoupper(substr(PHP_OS,0,3) == 'DAR')) {
      define('PHP_EOL',"\n");
    } else {
      define('PHP_EOL',"\n");
    }
  }
?>

Таким образом, вы можете без проблем использовать PHP_EOL ... очевидно, что PHP_EOL следует использовать в сценарии, который должен работать одновременно на нескольких системах, в противном случае вы можете использовать \ n, \ r или \ r \ n ...

Примечание: PHP_EOL может быть

1) on Unix    LN    == \n
2) on Mac     CR    == \r
3) on Windows CR+LN == \r\n

Надеюсь, этот ответ поможет.

0 голосов
/ 08 сентября 2009

Я использую константу PHP_EOL в некоторых сценариях командной строки, которые мне пришлось написать. Я разрабатываю на своей локальной машине Windows, а затем тестирую на сервере Linux. Использование константы означало, что мне не нужно беспокоиться об использовании правильного окончания строки для каждой из разных платформ.

0 голосов
/ 06 ноября 2009

Я использую WebCalendar и обнаружил, что Mac iCal препятствует импорту сгенерированного файла ics, потому что конец строки жестко закодирован в xcal.php как "\ r \ n". Я зашел и заменил все вхождения на PHP_EOL, и теперь iCal счастлив! Я также протестировал его в Vista, и Outlook также смог импортировать файл, даже если символ конца строки - "\ n".

0 голосов
/ 11 декабря 2009

Я предпочитаю использовать \ n \ r. Кроме того, я нахожусь в системе Windows, и \ n работает просто отлично в моем опыте.

Поскольку PHP_EOL не работает с регулярными выражениями, и это наиболее полезный способ работы с текстом, я действительно никогда не использовал его или не нуждался в этом.

0 голосов
/ 18 мая 2010

Когда jumi (плагин joomla для PHP) по какой-то причине компилирует ваш код, он удаляет все обратные слеши из вашего кода. Так что что-то вроде $csv_output .= "\n"; становится $csv_output .= "n";

Очень раздражающая ошибка!

Вместо этого используйте PHP_EOL, чтобы получить результат, которого вы добились.

...