php eol что такое
Когда я использую постоянную PHP «PHP_EOL»?
Я иногда вижу это в образцах кода PHP. Означает ли этот дескриптор проблемы DOS / Mac / Unix?
Да, PHP_EOL якобы используется для поиска символа новой строки кросс-платформенным способом, поэтому он обрабатывает проблемы DOS / Unix.
Вы используете PHP_EOL когда хотите новую строку, и хотите быть кросс-платформенным.
Это может быть, когда вы пишете файлы в файловой системе (журналы, экспорт, другие).
Вы бы использовали его, если вы используете php как скрипт из cron, и вам нужно было что-то выводить и отформатировать его для экрана.
Вы можете использовать его, если вы создаете электронное письмо для отправки, которое требует некоторого форматирования.
Из main/php.h PHP версии 5.6.30 и версии 7.1.1:
Я просто хотел показать значения возможностей PHP_EOL поддерживаемые PHP-источниками, так как пока не показано здесь …
PHP_EOL (строка) Правильный символ «Конец строки» для этой платформы. Доступно с PHP 4.3.10 и PHP 5.0.2
Вы можете использовать эту константу при чтении или записи текстовых файлов в файловой системе сервера.
Окончание строк в большинстве случаев не имеет значения, так как большинство программных средств способны обрабатывать текстовые файлы независимо от их происхождения. Вы должны соответствовать вашему коду.
Если заканчивается конец строки, явным образом указываю окончания строки вместо использования константы. Например:
Я хотел бы дать ответ, в котором говорится: «Когда не использовать его», поскольку он еще не был охвачен и может представить, что он используется вслепую, и никто не замечает, что проблема доходит до конца. Некоторые из них несколько противоречат некоторым из существующих ответов.
Если вы выводите на веб-страницу в HTML, особенно текст в
Нет, PHP_EOL не обрабатывает проблемы с конечной точкой, потому что система, в которой вы используете эту константу, – это не та же система, куда вы отправляете вывод.
Существует одно очевидное место, где это может быть полезно: когда вы пишете код, который преимущественно использует одиночные кавычки. Его аргументы в пользу того,
Искусство этого должно быть последовательным. Проблема с миксами и совпадением «и» заключается в том, что когда вы получаете длинные строки, вы действительно не хотите идти на охоту за тем, какую цитату вы использовали.
Как со всеми вещами в жизни, это зависит от контекста.
Стандартная «новая линия» DOS / Windows – это CRLF (= \ r \ n), а не LFCR (\ n \ r). Если мы поместим последнее, это может привести к неожиданному (ну, по сути, виду ожидаемого!: D) поведения.
В настоящее время почти все (хорошо написанные) программы принимают стандарт UNF LF (\ n) для кода новой строки, даже демоны почтовых отправителей (RFC устанавливает CRLF как новую строку для заголовков и тела сообщения).
Вы пишете код, который преимущественно использует одиночные кавычки.
У меня есть сайт, где скрипт регистрации записывает новую строку текста в текстовый файл после действия пользователя, который может использовать любую ОС.
Использование PHP_EOL в этом случае не представляется оптимальным. Если пользователь находится в Mac OS и записывает в текстовый файл, он помещает \ n. При открытии текстового файла на компьютере Windows он не отображает разрыв строки. По этой причине я использую вместо этого «\ r \ n», который работает при открытии файла на любой ОС.
Handy с error_log (), если вы выводите несколько строк.
Я обнаружил, что многие отладочные заявления выглядят странно на моих установках Windows, поскольку разработчики предполагают окончание unix при разрыве строк.
Я использую константу PHP_EOL в некоторых сценариях командной строки, которые мне приходилось писать. Я разрабатываю свою локальную машину Windows, а затем тестирую на сервере Linux. Использование константы означало, что мне не нужно было беспокоиться об использовании правильной строки, заканчивающейся для каждой из разных платформ.
Я использую WebCalendar и обнаружил, что Mac iCal barfs импортирует сгенерированный файл ics, потому что конец строки жестко закодирован в xcal.php как «\ r \ n». Я вошел и заменил все вхождения PHP_EOL, и теперь iCal счастлив! Я также тестировал его на Vista, и Outlook смог также импортировать этот файл, даже если символ конца строки «\ n».
Очень раздражающая ошибка!
Вместо этого используйте PHP_EOL, чтобы получить результат.
Я предпочитаю использовать \ n \ r. Кроме того, я нахожусь в системе Windows, и \ n отлично работает в моем опыте.
Поскольку PHP_EOL не работает с регулярными выражениями, и это самый полезный способ работы с текстом, я никогда не использовал его или не нуждался.
Работа с файлами в PHP часть 2 (PHP_EOL, file, scandir, is_file, is_dir, mkdir, rmdir)
Перенос строки
Чтение файла построчно в массив
Флаг FILE_IGNORE_NEW_LINES запрещает перенос в результирующий массив символов конца строки. Если флага FILE_IGNORE_NEW_LINES не будет, то в массиве окажутся строки с символами конца строки.
Второй флаг FILE_SKIP_EMPTY_LINES заставлет пропускать пустые строки файла. Поэтому пустые строки не попадут в результирующий массив.
Как и функции file_get_contents в функцию file необходимо передать полный путь к файлу в системе.
В случае ошибки функция file возвращает false.
Проверка является ли файлом или папкой
Создание папки
Удаление папки
Чтение содержимого папки
Резльутат выполнения этого скрипта будет содержать список файлов и папок в дериктории. Но только первого уровня. То есть в результат не попадут файлы и папки, которые являются вложенными.
Обратите внимание, что в примере, внутри функции GetAllFiles, происходит вызов этой же самой функции GetAllFiles. Именно поэтому функция называется рекурсивной.
В примере используется функция realpath. Она преобразует адреса, которые содержат точки «..», означающие переход к родительской папке, в полные адреса папок в системе.
Константа DIRECTORY_SEPARATOR служит для вывода разделителя в адресах файлов. К примеру, если в Linux используются «/» для разделения папок в адресах, то в Windows используется обратный слеш «\». Чтобы не задумываться над тем, какой нужно поставить, можно использовать константу DIRECTORY_SEPARATOR. В ней находится нужный разделитель для текущей системы.
Когда я использую PHP-константу «PHP_EOL»?
Я иногда вижу это в примерах кода PHP. Это решает проблемы конечной линии DOS / Mac / Unix?
Да, PHP_EOL якобы используется для поиска символа новой строки в кроссплатформенной совместимости, поэтому он решает проблемы DOS / Unix.
Обратите внимание, что PHP_EOL представляет символ конца строки для текущей системы. Например, он не найдет конечную строку Windows при выполнении в Unix-подобной системе.
Начиная main/php.h с версии PHP 7.1.1 и версии 5.6.30:
Вы используете, PHP_EOL когда вы хотите новую линию, и вы хотите быть кроссплатформенным.
Это может быть при записи файлов в файловую систему (журналы, экспорт, другое).
Вы бы использовали его, если вы запускаете php как скрипт из cron и вам нужно что-то вывести и отформатировать для экрана.
Вы можете использовать его, если создаете электронное письмо для отправки, которое требует некоторого форматирования.
PHP_EOL (string) Правильный символ «Конец строки» для этой платформы. Доступно с PHP 4.3.10 и PHP 5.0.2
Вы можете использовать эту константу при чтении или записи текстовых файлов в файловой системе сервера.
Окончания строк не имеют значения в большинстве случаев, так как большинство программных средств способны обрабатывать текстовые файлы независимо от их происхождения. Вы должны соответствовать вашему коду.
Если окончания строк имеют значение, явно указывайте окончания строк вместо использования константы. Например:
Я хотел бы добавить ответ, который касается «Когда его не использовать», так как он еще не был рассмотрен, и могу представить, что его используют вслепую, и никто не замечает, что есть проблема до тех пор, пока не произойдет. Отчасти это несколько противоречит некоторым из существующих ответов.
Если вы выводите на веб-страницу в HTML, в частности, текст
Нет, PHP_EOL не обрабатывает проблемы с конечной линией, потому что система, в которой вы используете эту константу, не та же система, в которую вы отправляете выходные данные.
Определение PHP_EOL заключается в том, что он дает вам символ новой строки операционной системы, над которой вы работаете.
На практике вам это почти никогда не нужно. Рассмотрим несколько случаев:
Когда вы выводите в Интернет, на самом деле не существует никаких соглашений, кроме того, что вы должны быть последовательными. Поскольку большинство серверов Unixy, вы все равно захотите использовать «\ n».
Если вы выводите в файл, PHP_EOL может показаться хорошей идеей. Тем не менее, вы можете получить аналогичный эффект, имея буквальный символ новой строки внутри вашего файла, и это поможет вам, если вы попытаетесь запустить некоторые файлы в формате CRLF в Unix, не забивая существующие символы новой строки (как парень с двойной загрузкой системы). Могу сказать, что предпочитаю последнее поведение)
PHP_EOL настолько смехотворно длинен, что его действительно не стоит использовать.
Php eol что такое
Результат выполнения данного примера:
Подробную документацию и примеры использования читайте в разделе декларация типов.
Объявления возвращаемых значений
В PHP 7 добавлена поддержка объявления возвращаемого типа. Аналогично как и объявления типов аргументов, объявление типа возвращаемого значения указывает, значение какого типа должна вернуть функция. Для объявления типа возвращаемого значения доступны все те же типы, что и для объявления типов аргументов.
Результат выполнения данного примера:
Полную документацию и примеры использования читайте в разделе про объявление возвращаемого типа.
Оператор объединения с null
Оператор spaceship (космический корабль)
Определение констант массивов с помощью define()
echo ANIMALS [ 1 ]; // выводит «cat»
?>
Анонимные классы
Результат выполнения данного примера:
Подробную документацию и примеры использования читайте в разделе про анонимные классы.
Синтаксис кодирования Unicode
Он принимает шестнадцатеричный код Unicode и записываем его в формате UTF-8 в двойных кавычках или формате heredoc. Любой корректный код будет принят. Ведущие нули по желанию.
Результат выполнения данного примера:
Closure::call()
Closure::call() является более производительным и коротким способом временного связывания области действия объекта с замыканием и его вызовом.
Результат выполнения данного примера:
unserialize() с фильтрацией
Эта функциональность обеспечивает более высокий уровень безопасности при десериализации объектов с непроверенными данными. Это позволяет предотвратить возможную инъекцию кода, позволяя разработчику использовать белый список классов для десериализации.
IntlChar
Новый класс IntlChar добавляет новую функциональность в ICU. Класс определяет несколько статических методов и констант для манипулирования символами Unicode.
Результат выполнения данного примера:
Для использования это класса необходимо установить модуль Intl.
Ожидания
Вместе тем, что старое API поддерживается, assert() теперь является языковой конструкцией, принимающей первым аргументом выражения, а не только строки ( string ) для оценки или логические значения ( bool ) для проверки.
class CustomError extends AssertionError <>
Результат выполнения данного примера:
Групповые объявления use
// До PHP 7
use some \namespace\ ClassA ;
use some \namespace\ ClassB ;
use some \namespace\ ClassC as C ;
use function some \namespace\ fn_a ;
use function some \namespace\ fn_b ;
use function some \namespace\ fn_c ;
use const some \namespace\ ConstA ;
use const some \namespace\ ConstB ;
use const some \namespace\ ConstC ;
Выражение return в генераторах
= (function() <
yield 1 ;
yield 2 ;
Результат выполнения данного примера:
Возможность явно получать окончательное значение генератора является очень полезной, так как позволяет клиентскому коду, использующему генератор, получать и обработать самое последнее значение генератора, после которого точно ничего больше не будет. Это сильно проще, чем вынуждать разработчика проверять, последнее ли значение вернулось и как-то по особенному его обрабатывать.
Делегация генератора
function gen ()
<
yield 1 ;
yield 2 ;
yield from gen2 ();
>
function gen2 ()
<
yield 3 ;
yield 4 ;
>
Результат выполнения данного примера:
Функция целочисленного деления intdiv()
Новая функция intdiv() производит целочисленное деление операндов и возвращает его результат.
Результат выполнения данного примера:
Опции сессий
Теперь session_start() принимает массив опций, которые переопределят конфигурационные директивы сессии установленные в php.ini.
К примеру, для установки session.cache_limiter равным private и немедленному закрытию сессии после чтения её данных:
preg_replace_callback_array()
Функции CSPRNG
Теперь функция list() всегда может распаковывать объекты, реализующие ArrayAccess
\n vs. PHP_EOL vs.
?
Else, we need to use » » to wrap the output content or use nl2br() to insert
before \n so as the multiple line mark can take effect in HTML. Like following example.
Some people believe PHP_EOL is useful when writing data to a file, example a log file. It will create line breaks no matter whatever your platform.
6 Answers 6
DOS, Unix, and Mac (pre-OS X and OS X) all use different characters or character combinations to represent «go to the next line.»
Therefore, when to use each one depends on what you’re going for. If you’re writing for a specific platform without the intention of portability, use the character or character combination to break lines that matter to that platform. The purpose of PHP_EOL is to automatically choose the correct character for the platform, so that your new lines are platform-independent.
All of these appear as a single space within a browser as browsers collapse whitespace into a display space for display purposes (unless you’re using
I typically break up my text with linebreaks for readability, so I wouldn’t want the linebreaks rendered in the document. That being, the
tag is necessary.
CSS whitespace,
\r, \n, PHP_EOL
It makes no sense to compare a HTML linebreak
with actual text linebreaks.
is only a linepage in the browser’s rendering of a website whereas \n and PHP_EOL are actual, source code linebreaks.
You can create a function with Flavio’s code, that always sets the correct newline, no matter if you run it on the shell or in the browser:
It was created for HTML designing.
will not work in many places until it supports content type is
an example1 in mail functions where the content type is text.
will not work but /n will work.
more examples where you will see different results.
As document.write writes to the DOM you need to use
for a newline. Relevant MDN docs
because alert function is asking a message to be shown to the user it isn’t the same as a popup window with HTML in it
is basically common in most of the programming languages for a line break and it will work within most of the platforms. \n and PHP_EOL are actual, source code linebreaks.
The constant PHP_EOL should generally be used for platform-specific output.
Mostly for file output really. Actually, the file functions already transform \n ←→ \r\n on Windows systems unless used in fopen(…, «wb») binary mode. For file input, you should prefer \n however. While most network protocols (HTTP) are supposed to use \r\n, that’s not guaranteed.
Therefore it’s best to break up on \n and remove any optional \r manually:
A more robust and terser alternative is using preg_split() and a regexp:
Beware that old Macs use \r, this would be a better solution: preg_replace(‘
should be used when writing output such as log files.
It will produce the line break specific to your platform.
it is a constant holding the line break character(s) used by the server platform. In the case of Windows, it’s \r\n. On *nix, it’s \n. You apparently have a Windows server.