PHP - как создать символ новой строки? - PullRequest
365 голосов
/ 21 ноября 2010

В PHP я пытаюсь создать символ новой строки:

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';

После этого я открываю созданный файл в Блокноте, и он буквально записывает новую строку:

1 Джон Доу 1 Джон Доу 1 Джон Доу 1007 *

Я пробовал много вариантов \r\n, но ни одна из них не работает. Почему новая строка не превращается в новую?

Ответы [ 13 ]

578 голосов
/ 21 ноября 2010

Только строки в двойных кавычках интерпретируют escape-последовательности \r и \n как '0x0D' и '0x0A' соответственно, поэтому вы хотите:

"\r\n"

Строки в одинарных кавычках , с другой стороны, известны только escape-последовательности \\ и \'.

Таким образом, если вы не объедините строку в одинарных кавычках с разрывом строки, сгенерированным в другом месте (например, используя строку в двойных кавычках "\r\n" или chr function chr(0x0D).chr(0x0A)), единственный другой способ разрыв строки внутри одной строки в кавычках буквально печатает ее с помощью вашего редактора:

$s = 'some text before the line break
some text after';

Обязательно проверьте ваш редактор на наличие настроек разрыва строки, если вам требуется определенная последовательность символов (например, \r\n).

202 голосов
/ 21 ноября 2010

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

echo $clientid, ' ', $lastname, PHP_EOL;
86 голосов
/ 23 декабря 2013

Команда "echo" в PHP отправляет вывод в браузер в виде необработанного html, поэтому даже если в двойных кавычках браузер не будет разбирать его на две строки, потому что символ новой строки в HTML ничего не значит.Вот почему вам нужно либо использовать:

echo [output text]."<br>";

при использовании «echo», либо вместо этого использовать fwrite ...

fwrite([output text]."\n");

Это приведет к выводу новой строки HTML вместо "\ n».

33 голосов
/ 04 января 2015

Используйте константу PHP_EOL для получения правильного символа независимо от платформы.

http://us3.php.net/manual/en/reserved.constants.php

Простой пример использования:

<?php
$data = 'First line' . PHP_EOL .
        'Second line' . PHP_EOL .
        'Third line';

file_put_contents("filename.txt", $data);
?>
19 голосов
/ 22 ноября 2012

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

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

Вы можете иметь оба в одной строке:

echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";

выходы:

$clientid $lastname
1 John Doe
14 голосов
/ 21 ноября 2010

Вы должны использовать это:

"\n"

Вы также можете взглянуть на PHP EOL .

11 голосов
/ 21 ноября 2010

На самом деле \r\n для html-стороны вывода.С этими символами вы можете просто создать новую строку в html-коде, чтобы сделать его более читабельным:

echo "<html>First line \r\n Second line</html>";

выведет:

<html>First line
Second line</html>

, что при просмотре страницы будет:

First line Second line

Если вы действительно это имели в виду, вам нужно просто исправить одинарную кавычку с помощью "" цитаты:

echo "\r\n";

В противном случае, если вы хотите разбить текст, в нашем примере 'Первая строка'и «Вторая строка», вы должны использовать HTML-код: <br />:

First line<br />Second line

, который будет выводить:

First line
Second line

Также было бы более читабельным, если вы замените весьскрипт с:

echo "$clientid $lastname \r\n";
7 голосов
/ 16 августа 2015

w3school предложил этот путь:

echo nl2br("One line.\n Another line.");

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

3 голосов
/ 12 июля 2013

По какой-то причине в каждом посте, спрашивающем о переводе новой строки в PHP, не упоминается тот случай, когда простое добавление новой строки в строки в одинарных кавычках будет именно таким, как вы думаете:

 echo 'foo\nbar';

Пример 1 явно не печатает желаемый результат, однако, хотя это правда, что вы не можете экранировать новую строку в одинарных кавычках, вы можете иметь один:

ex 2.

 echo 'foo
 bar';

Пример 2 имеет точно желаемое поведение.К сожалению, добавленная новая строка зависит от операционной системы.Обычно это не проблема, поскольку веб-браузеры / серверы будут правильно интерпретировать новую строку, будь то \ r, \ r \ n или \ n.

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

примечание: используя многофункциональный текстовый редактор, вы сможете вставить новую строку в виде двоичного символа (ов), который представляет новую строку в другой операционной системе.чем тот, который редактирует файл.Если ничего не помогает, достаточно использовать шестнадцатеричный редактор для вставки двоичного символа ascii.

2 голосов
/ 29 октября 2013

Используйте PHP nl2br, чтобы получить переводы строк в текстовой строке.

$ text = "Ману хороший мальчик. (Введите) Он хорошо умеет кодировать.

echo nl2br ($ text);

Result.

Ману хороший мальчик.

Он хорошо умеет кодировать.

...