В PHP я пытаюсь создать символ новой строки:
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
Затем я открываю созданный файл в "Блокноте" и записывает новую строку буквально:
1 Джон Доу 1 Джон Доу 1 Джон Доу \r\n
Я пробовал много вариантов \r\n
, но никто не работает. Почему новая линия не превращается в новую строку?
Только двойные кавычки интерпретируют 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
).
Для окончательной окончательной версии платформы вы можете использовать предопределенную константу PHP_EOL
, как в:
echo $clientid, ' ', $lastname, PHP_EOL;
PHP_EOL
скорее будет зависеть от платформы, так как его значение зависит от платформы.
Команда "echo" в PHP отправляет вывод в браузер как raw html, поэтому даже если в двойных кавычках браузер не будет анализировать его на две строки, потому что символ новой строки в HTML ничего не значит. Вот почему вам нужно либо использовать:
echo [output text]."<br>";
при использовании "эха", или вместо этого используйте fwrite...
fwrite([output text]."\n");
Это приведет к выводу HTML-строки вместо "\n".
Используйте константу 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);
?>
Строки между двойными кавычками ""
интерполяция, то есть они преобразуют экранированные символы в печатные символы.
Строки между одинарными кавычками ''
являются буквальными, то есть они обрабатываются точно так же, как набираются символы.
Вы можете иметь обе строки в одной строке:
echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";
выходы:
$clientid $lastname
1 John Doe
echo "$clientid $lastname\r\n"
Фактически \r\n
для html-стороны вывода. С помощью этих символов вы можете просто создать новую строку в html-коде, чтобы сделать ее более читаемой:
echo "<html>One 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
Также было бы более читаемым, если вы замените весь script на:
echo "$clientid $lastname \r\n";
First line Second line
- любые пробелы, включая символы новой строки, будут сжаты до одного символа пробела в отображаемом выводе. Кроме того, </br>
является действительным HTML.
w3school предлагается следующим образом:
echo nl2br("One line.\n Another line.");
используя эту функцию, вы можете это сделать. Я пробовал другие способы, упомянутые выше, но они не помогут мне.
По какой-то причине каждое сообщение, спрашивающее о прохождении новой строки в PHP, не упоминает случай, когда просто вставка новой строки в строки с одним кадром будет делать именно то, что вы думаете:
ex 1.
echo 'foo\nbar';
Пример 1 явно не печатает желаемый результат, однако, хотя это правда, вы не можете избежать новой строки в одинарных кавычках, вы можете иметь один:
ex 2.
echo 'foo
bar';
Пример 2 имеет точно заданное поведение. К сожалению, новая строка, которая вставлена, зависит от операционной системы. Обычно это не проблема, поскольку веб-браузеры/серверы будут правильно интерпретировать новую строку, будь то \r,\r\n или\n.
Очевидно, что это решение не идеально, если вы планируете распространять файл другими способами, а затем веб-браузером и несколькими операционными системами. В этом случае вы должны увидеть один из других ответов.
Примечание: с помощью полнофункционального текстового редактора вы сможете вставить новую строку как двоичный символ (символы), который представляет новую строку в другой операционной системе, чем редактирование файла. Если все остальное не удается, просто используйте hex-редактор для вставки двоичного символа ascii.
Используйте PHP nl2br, чтобы получить символы новой строки в текстовой строке.
$text = "Manu - хороший мальчик. (Enter) Он может хорошо писать.
echo nl2br ($ text);
Результат.
Ману - хороший мальчик.
Он умеет хорошо писать.
nl2br
преобразует символы новой строки в HTML-тег <br />
. Если строка не содержит символа новой строки, эта функция ничего не сделает! Более того, вопрос не в том, чтобы разбить строку в абзаце в HTML. Это про символ новой строки !
Используйте chr (13) для возврата каретки и chr (10) для новой строки
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo chr (13). chr (10);
\r\n
.
Я также пробовал эту комбинацию как в одиночных кавычках, так и в двойных кавычках. Но никто не работал. Вместо использования \n
лучше использовать <br/>
в двойных кавычках. Как это..
$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";
Для любых выражений эха я всегда использую <br>
внутри двойных кавычек.