Php eol не работает

Не получается перевод строки в выводе при использовании PHP_EOL

Я собираю строку, которую я выведу в файл .srt:

Но похоже, что PHP_EOL не работает, потому что мой вывод:

и не имеет новых строк. Я пытаюсь получить вывод:

с последующим переводом строки.

Работает при тестировании через localhost на моем компьютере. Возможно, в версии PHP на моем хосте отсутствует поддержка PHP_EOL ?

2 ответа

В руководстве по PHP говорится, что константа PHP_EOL была доступна с PHP 4.3.10 и PHP 5.0.2

PHP_EOL (строка) Правильный символ «Конец строки» для этой платформы. Доступно с PHP 4.3.10 и PHP 5.0.2 — http://php.net/manual /en/reserved.constants.php

Итак, проверьте, существует ли он:

и если он не определен, просто определите его вручную, если хотите

ИЛИ просто используйте echo «\n» или echo «\r\n»

Другая возможная причина — когда вы выводите переменную $srt в браузере, вы выводите, а тип mime задается в HTML и т. д. вы видите его одной строкой, но если вы просматриваете источник, он должен быть разбит на несколько строк.

Чтобы обеспечить вывод текста, вы можете отобразить тег

PHP_EOL Правильный символ «Конец строки» для этой платформы.

Так что он работает на локальном хосте, потому что его окно и дает разрыв строки в Windows

Ваш веб-сайт, вероятно, работает на Linux и дает разрыв строки в Linux

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

Источник

Когда я использую константу PHP «PHP EOL»?

когда это хорошая идея, чтобы использовать PHP_EOL ?

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

17 ответов

да PHP_EOL якобы используется для поиска символа новой строки кросс-платформенно-совместимым способом, поэтому он обрабатывает проблемы DOS/Unix.

отметим, что PHP_EOL представляет символ конечной строки для настоящее

С main/php.h PHP версии 5.6.30 и версии 7.1.1:

Как видите, PHP_EOL может быть «\r\n» (на серверах Windows) или «\n» (на что-либо другое). На PHP версии до 5.4.0RC8, было третье значение, возможное для PHP_EOL : «\r» (на серверах MacOSX). Это было неправильно и было исправлено на 2012-03-01 с 61193 ошибка.

как уже говорили другие, вы можете использовать PHP_EOL в любом виде выхода (где любой из допустимы следующие значения: HTML, XML, logs. ), где вы хотите Единой newlines (и вы должны хотеть это на мой взгляд).

Я просто хотел показать возможные значения PHP_EOL поддерживается источниками PHP, так как он еще не был показан здесь.

вы используете PHP_EOL Если вы хотите новую строку, и вы хотите быть кросс-платформенной.

Это может быть при записи файлов в файловую систему (журналы, экспорт, другие).

вы можете использовать его, если хотите, чтобы ваш сгенерированный HTML был читаемым. Таким образом, вы можете следовать своим
С PHP_EOL .

вы бы использовали его, если вы используете php как скрипт из cron, и вам нужно что-то вывести и отформатировать его для экрана.

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

PHP_EOL (строка) Правильный символ «конец строки» для этой платформы. Доступно с PHP 4.3.10 и PHP 5.0.2

эту константу можно использовать при чтении или записи текстовых файлов в файловой системе сервера.

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

Если окончания строк имеют значение, явно укажите строку окончания вместо использования константы. Например:

  • HTTP-заголовки должны быть разделены \r\n
  • CSV-файлы должны использовать \r\n как разделитель строк

Я хотел бы добавить ответ, который обращается » когда не использовать его», поскольку он еще не был покрыт и может себе представить, что он используется вслепую, и никто не замечает, что есть проблема до конца линии. Некоторые из них несколько противоречат некоторым существующим ответам.

если вывод на веб-страницу в HTML, особенно текст в

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

Я бы не рекомендовал использовать PHP_EOL вообще. Unix / Linux use \n, MacOS / OS X тоже изменился с \r на \n, и в Windows многие приложения (особенно браузеры) могут отображать его правильно. В Windows также легко изменить существующий клиентский код, чтобы использовать только \n и по-прежнему поддерживать обратную совместимость: просто измените разделитель для обрезки строк от \r\n до \n и оберните его в функцию trim () like.

определение PHP_EOL заключается в том, что оно дает вам символ новой строки операционной системы, над которой вы работаете.

на практике вам это почти никогда не понадобится. Рассмотрим несколько случаев:

когда вы выводите в интернет, на самом деле нет никакого соглашения, кроме того, что вы должны быть последовательными. Поскольку большинство серверов Unixy, вы все равно захотите использовать «\n».

Если вы выводите в файл, PHP_EOL может показаться хорошая идея. Тем не менее, вы можете получить аналогичный эффект, имея буквальную новую строку внутри вашего файла, и это поможет вам, если вы пытаетесь запустить некоторые файлы в формате CRLF в Unix без clobbering существующих новых строк (как парень с двойной загрузкой системы, я могу сказать, что я предпочитаю последнее поведение)

PHP_EOL настолько смехотворно длинный, что его действительно не стоит использовать.

есть одно очевидное место, где это может быть полезно: когда вы пишете код, который преимущественно использует один строк процитировать. Его можно спорить о том, является ли:

искусство этого-быть последовательным. Проблема с сочетанием и сопоставлением » и » заключается в том, что, когда вы получаете длинные строки, вы действительно не хотите идти на охоту за тем, какой тип цитаты вы использовали.

Как и все вещи в жизни, это зависит от контекста.

DOS/Windows стандартная «новая строка» — CRLF (= \r\n), а не LFCR (\n\r). Если мы поставим последнее, это, вероятно, приведет к некоторым неожиданным (ну, на самом деле, вроде ожидаемым! :Д) поведение.

В настоящее время почти все (хорошо написанные) программы принимают стандарт UNIX LF (\n) для кода новой строки, даже демоны отправителя почты (RFC устанавливает CRLF как newline для заголовков и тела сообщения).

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

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

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

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

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

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

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

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

очень раздражает ошибка!

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

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

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

Источник

Когда я использую постоянную PHP «PHP_EOL»?

Когда рекомендуется использовать PHP_EOL ?

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

Да, PHP_EOL якобы используется для поиска символа новой строки кросс-платформенным способом, поэтому он обрабатывает проблемы DOS / Unix.

Вы используете PHP_EOL когда хотите новую строку, и хотите быть кросс-платформенным.

Это может быть, когда вы пишете файлы в файловой системе (журналы, экспорт, другие).

Вы можете использовать его, если хотите, чтобы ваш сгенерированный HTML был доступен для чтения. Таким образом, вы можете следить за своим
с помощью PHP_EOL .

Вы бы использовали его, если вы используете php как скрипт из cron, и вам нужно было что-то выводить и отформатировать его для экрана.

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

Из main/php.h PHP версии 5.6.30 и версии 7.1.1:

Как вы видите, PHP_EOL может быть «\r\n» (на серверах Windows) или «\n» (что-то еще). В версиях PHP, предшествующих 5.4.0RC8, для PHP_EOL было возможно третье значение: «\r» (на серверах MacOSX). Это было неправильно и исправлено в 2012-03-01 с ошибкой 61193 .

Как уже говорили вам другие, вы можете использовать PHP_EOL в любом виде вывода (где любое из этих значений допустимо – например: HTML, XML, журналы …), где вы хотите использовать унифицированные новые строки (и вам это нужно по моему мнению) ,

Я просто хотел показать значения возможностей PHP_EOL поддерживаемые PHP-источниками, так как пока не показано здесь …

PHP_EOL (строка) Правильный символ «Конец строки» для этой платформы. Доступно с PHP 4.3.10 и PHP 5.0.2

Вы можете использовать эту константу при чтении или записи текстовых файлов в файловой системе сервера.

Окончание строк в большинстве случаев не имеет значения, так как большинство программных средств способны обрабатывать текстовые файлы независимо от их происхождения. Вы должны соответствовать вашему коду.

Если заканчивается конец строки, явным образом указываю окончания строки вместо использования константы. Например:

  • Заголовки HTTP должны быть разделены \r\n
  • Файлы CSV должны использовать \r\n качестве разделителя строк

Я хотел бы дать ответ, в котором говорится: «Когда не использовать его», поскольку он еще не был охвачен и может представить, что он используется вслепую, и никто не замечает, что проблема доходит до конца. Некоторые из них несколько противоречат некоторым из существующих ответов.

Если вы выводите на веб-страницу в HTML, особенно текст в

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

Я бы не рекомендовал использовать PHP_EOL. Unix / Linux использует \ n, MacOS / OS X изменен с \ r на \ n и в Windows многие приложения (особенно браузеры) могут отображать их правильно. В Windows также легко изменить существующий клиентский код, чтобы использовать только \ n и по-прежнему поддерживать обратную совместимость. Просто измените разделитель на обрезку строки с \ r \ n на \ n и оберните его в функцию trim () ,

Существует одно очевидное место, где это может быть полезно: когда вы пишете код, который преимущественно использует одиночные кавычки. Его аргументы в пользу того,

Искусство этого должно быть последовательным. Проблема с миксами и совпадением «и» заключается в том, что когда вы получаете длинные строки, вы действительно не хотите идти на охоту за тем, какую цитату вы использовали.

Как со всеми вещами в жизни, это зависит от контекста.

Стандартная «новая линия» 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».

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

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

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

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

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

Источник

Читайте также:  Можно ли починить apple pencil
Оцените статью