PHP — как создать символ новой строки?
Я пробовал много вариантов \r\n , но никто не работает. Почему новая линия не превращается в новую строку?
13 ответов
Только двойные кавычки интерпретируют escape-последовательности \r и \n как «0x0D» и «0x0A» соответственно, поэтому вы хотите
Одиночные кавычки, с другой стороны, знают только escape-последовательности \\ и \’ .
Итак, если вы не объедините одну кавычную строку с разрывом строки, сгенерированным в другом месте (например, с использованием строки с двойными кавычками «\r\n» или с помощью chr function chr(0x0D).chr(0x0A) ), единственный способ разбить строку в одной кавычной строке — буквально набрать ее с помощью вашего редактора:
$s = 'some text before the line break some text after';
Убедитесь, что ваш редактор отредактировал свои параметры разрыва строки, если вам нужна определенная последовательность символов (например, \r\n ).
Так что, если здесь есть политика без двойных кавычек, как лучше это сделать со строками в одинарных кавычках?
@Pacerier Единственный способ получить символы возврата каретки и новой строки в одной строке в кавычках — это ввод символов непосредственно с клавиатуры (нажмите Enter, в зависимости от настроек вашего редактора в конце строки). В противном случае просто используйте конкатенацию строк.
@Gumbo: Вы говорите, что строки в одинарных кавычках, с другой стороны, знают только escape-последовательности \\ и \ ‘. Но я только что напечатал строку с echo как »; echo ‘Новая строка добавлена’; ?> и видел вывод в браузере. Он буквально добавил новую строку между двумя отображаемыми строками. Это означает, что символ
или
раскрывается в одной строке в кавычках. Есть ли какие-либо другие такие символы HTML, кроме этих трех, которые могут быть поняты PHP внутри строк в одинарных кавычках? Я прошу вас обновить свой ответ соответственно. Благодарю вас.?>
@ user2839497 То, что вы говорите, не имеет никакого смысла. Здесь нет контекста браузера. И, конечно, браузер отображает новую строку при обнаружении
. И, конечно же, ничто не мешает вам добавить «
» в одну строку в кавычках. Но это не делает перевод строки в простой текстовый файл.
@Pacerier Для политики с одинарными кавычками вместо разрыва строки в редакторе, как Гумбо предложил в своем комментарии, вы можете использовать другое решение в ответе Gumbos, например: «вывод новой строки» .chr (0x0A). »В одной строке в кавычках. ».
Для окончательной окончательной версии платформы вы можете использовать предопределенную константу PHP_EOL , как в:
echo $clientid, ' ', $lastname, PHP_EOL;
Гамбо, что означало нневала, так это то, что с точки зрения кодирования не имеет значения, на какой платформе ты находишься.
Команда «echo» в PHP отправляет вывод в браузер как raw html, поэтому даже если в двойных кавычках браузер не будет анализировать его на две строки, потому что символ новой строки в HTML ничего не значит. Вот почему вам нужно либо использовать:
при использовании «эха», или вместо этого используйте fwrite.
Это приведет к выводу HTML-строки вместо «\n».
При том, как задан вопрос, вполне вероятно, что он выводит эти данные либо в текстовое поле, либо в javascript и т. Д. Для синтаксического анализа или чтения обычного текста, который не будет отображаться как HTML
Используйте константу PHP_EOL, чтобы получить нужный символ независимо от платформы.
Простой пример использования:
Этот ответ является одним из лучших, поскольку он ссылается на официальную документацию. Простой пример использования сделает его лучшим!
Строки между двойными кавычками «» интерполяция, то есть они преобразуют экранированные символы в печатные символы.
Строки между одинарными кавычками » являются буквальными, то есть они обрабатываются точно так же, как набираются символы.
Вы можете иметь обе строки в одной строке:
echo '$clientid $lastname ' . "\r\n"; echo "$clientid $lastname \r\n";
$clientid $lastname 1 John Doe
Ваше объяснение о различных типах строковых обозначений в PHP прекрасно, поскольку оно показывает ошибку, допущенную автором вопроса. Но ваш пример кода не даст ожидаемого результата, поскольку переменные используются в одной строке в кавычках, и, как вы упомянули, они не будут интерполированы!
@Damien Flament, вот что я сказал — содержимое между одинарными кавычками не интерполируется, а содержимое между двойными кавычками. Возможно, мой пример сбивает с толку, потому что вы ожидаете увидеть содержимое $ clientid и $ lastname, а не литералы «$ clientid» и «$ lastname». Я думаю, что это был заголовок таблицы, которую я использовал во время отладки. следующие строки были бы echo «$clientid $lastname\r\n»
Когда я пишу «ожидаемый результат», я имею в виду результат, ожидаемый автором в своем вопросе. Добавление кода, указанного в вашем комментарии, к вашему ответу и отображению результата может улучшить качество вашего ответа.
Фактически \r\n для html-стороны вывода. С помощью этих символов вы можете просто создать новую строку в html-коде, чтобы сделать ее более читаемой:
echo "One line \r\n Second line";
что просмотр страницы будет выглядеть следующим образом:
Если вы действительно имели в виду это, вам нужно только исправить одну цитату с цитатой:
В противном случае, если вы хотите разбить текст, в нашем примере «Первая строка» и «Вторая строка» вы должны использовать код html:
:
Также было бы более читаемым, если вы замените весь script на:
echo "$clientid $lastname \r\n";
Нет, не должно. Потому что это в основном неправильно. Первый блок кода будет отображаться как First line Second line — любые пробелы, включая символы новой строки, будут сжаты до одного символа пробела в отображаемом выводе. Кроме того, является действительным HTML.
Также имейте в виду, что если вы отправляете текстовые электронные письма с вашим PHP-скриптом, вам все равно понадобятся эти окончания строк вместо разрывов (
)
Вы должны использовать это:
Вы также можете взглянуть на PHP EOL.
w3school предлагается следующим образом:
echo nl2br("One line.\n Another line.");
используя эту функцию, вы можете это сделать. Я пробовал другие способы, упомянутые выше, но они не помогут мне.
По какой-то причине каждое сообщение, спрашивающее о прохождении новой строки в PHP, не упоминает случай, когда просто вставка новой строки в строки с одним кадром будет делать именно то, что вы думаете:
Пример 1 явно не печатает желаемый результат, однако, хотя это правда, вы не можете избежать новой строки в одинарных кавычках, вы можете иметь один:
Пример 2 имеет точно заданное поведение. К сожалению, новая строка, которая вставлена, зависит от операционной системы. Обычно это не проблема, поскольку веб-браузеры/серверы будут правильно интерпретировать новую строку, будь то \r,\r\n или\n.
Очевидно, что это решение не идеально, если вы планируете распространять файл другими способами, а затем веб-браузером и несколькими операционными системами. В этом случае вы должны увидеть один из других ответов.
Примечание: с помощью полнофункционального текстового редактора вы сможете вставить новую строку как двоичный символ (символы), который представляет новую строку в другой операционной системе, чем редактирование файла. Если все остальное не удается, просто используйте hex-редактор для вставки двоичного символа ascii.
Как правильно сделать перенос строки на PHP: все способы
Тег br используется для вставки разрыва строки в HTML. Это пустой тег. Соответственно — у него отсутствует закрывающий тег и он ничего не переносит в плане контента. Сразу пример использования:
Это параграф.
Он состоит сразу из нескольких строк.
Примечание: в этом примере тег br используется для вставки разрыва строки между двумя предложениями, в результате чего второе предложение появляется на новой строке.
Зачем нужен
Тег br чаще всего применяется для разделения длинных строк текста или для разделения элементов в списке. Его также можно использовать и для добавления дополнительного пробела между строками текста.
br часто используется в сочетании с другими HTML-элементами, такими как p (абзац) или div (разделение), для структурирования содержимого веб-страницы.
Важно: тег br следует использовать только для добавления разрывов в HTML. Для создания других типов интервалов или иной компоновки страницы — нужно применять стили.
Тег br используется для добавления разрыва внутри блока текста, но не для начала нового абзаца.
Использование спецсимволов \n, \r, \r\n
Для создания новой строки внутри исходного хода можно применять спецсимволы \n или \r\n.
Важно: если нужно создать видимые на странице разрывы, лучше использовать nl2br() — эта функция вставляет HTML-код разрыва строки перед всеми новыми строками. Понять принцип этой функции проще всего на следующем примере:
echo "В исходном тексте веб-страницы \r\n можно увидеть новую строчку в этой строчку";
echo "
";
echo nl2br("Вы увидете \n новых строчек в этой строчке\r\n..");
?>
Использование функции nl2br
Выше мы рассмотрели использование этой функции кратко. Давайте закрепим её, рассмотрев ещё несколько примеров.
Синтаксис функции имеет такой вид:
Запомнить: функция nl2br() вставляет разрывы перед всеми новыми строками. В качестве них могут выступать: \r, \r\n, \n, \n\r.
Изучение способов переноса принесет вам пользу в долгосрочной перспективе. Ну а чтобы пользы было ещё больше — успейте записаться на курс бэкенд-разработчик от Loft.
Функция принимает два параметра:
- string. Входная строка. Обязательный.
- is_xhtml. Может быть TRUE или FALSE. Указывает, стоит ли применять переводы строк, совместимые с XHTML. Опциональный.
Давайте посмотрим ещё один пример использования функции:
echo nl2br("Привет, Миша!\r\nДобро пожаловать на сайт", false);
?>
Привет, Миша!
Добро пожаловать на сайт.
При открытии в браузере, в самом содержимом страницы, пользователь увидит:
Привет, Миша! Добро пожаловать на сайт.
Следующий пример. Он очень похож на предыдущий:
echo nl2br("Привет, Миша!\nДобро пожаловать на сайт.");
?>
Привет, Миша!
Добро пожаловать на сайт.
При открытии в браузере, в самом содержимом страницы, пользователь увидит:
Привет, Миша! Добро пожаловать на сайт.
Тег, таким образом, не виден на странице (в её содержимом)
Универсальный перенос при помощи константы PHP_EOL
PHP_EOL — это предопределенная константа, которая помогает улучшить совместимость PHP-приложений с различными платформами.
Она автоматически выбирает символ конца строки, используемый в системе пользователя (на которой выполняется PHP).
В чем сложность
- В операционных системах семейства Windows новая строка обозначается с помощью \r\n (так называемый возврат каретки или CRLF)
- В операционных системах семейства в Linux и Mac для вышеуказанной цели задействован unix-подобный разделитель \n.
Чтобы улучшить совместимость с другими ОС не применяйте «\n» для создания новых строк
PHP_EOL можно использовать так же, как и \n:
echo 'Privet Misha' . PHP_EOL;
Примечание: поскольку такие переносы строк невидимы, мы использовали [LF], чтобы обозначить его (в том месте, где был выведен перенос).
Вывод. Какой метод правильнее будет использовать
Тег br — полезный инструмент для управления макетом и форматированием текста на веб-странице. Наравне с другими HTML-тегами ( p и div ) br применяется для создания, структурирования и форматирования видимого содержимого страницы.
Чтобы не запутаться в разных методах переноса — даем резюмирующую шпаргалку:
- br / — это HTML-тег. Его задача вывести последующее содержимое с новой строки. Подойдет для выводимого на странице содержимого.
- \r\n — стандартный перенос.
- nl2br() — функция выполняется построчно и автоматически меняет все переносы строк на br/ .
- PHP_EOL — пригодится, когда нужно обеспечить мультиплатформенность.
Хотите стать крутым и востребованным веб-разработчиком? У нас есть специализированный курс!