Подтвердить что ты не робот

PHP Linefeeds (\n) не работает

По какой-то причине я не могу использовать \n для создания перевода строки при выводе файла в PHP. Он просто пишет "\n" в файл. Я попытался использовать "\\n", где он просто пишет "\n" (как и ожидалось). Но я не могу для жизни понять, почему добавление \n в мои строки не создает новые строки. Я также пробовал \r\n, но просто добавляет "\r\n" к строке в файле.

Пример:

error_log('test\n', 3, 'error.log');
error_log('test2\n', 3, 'error.log');

Выходы:

test\ntest2\n

Использование MAMP для OSX в случае, если это имеет значение (возможно, какая-то конфигурация PHP)?

Любые предложения?

4b9b3361

Ответ 1

Используйте двойные кавычки. "test\n" будет работать нормально (или используйте 'test'. PHP_EOL).

Если строка заключена в двойные кавычки ("), PHP будет интерпретировать больше escape-последовательностей для специальных символов:

http://php.net/manual/en/language.types.string.php

Ответ 2

\n не предназначен для просмотра конечным пользователем как новая строка, для этого вы должны использовать элемент html <br/>. /n влияет только на то, как HTML-код, созданный php, появляется в исходном коде веб-страницы. если вы перейдете на свою веб-страницу и нажмите "Просмотр источника", вы увидите PHP-сгенерированный html как одну длинную строку. Не красиво. То, что \n для ;, разбивает этот php-генерируемый html на более короткие строки. Цель \n состоит в том, чтобы сделать более красивую страницу источника просмотра.

Ответ 3

Когда вы запустите PHP script в браузере, он будет отображаться как HTML по умолчанию. Если книги, которые вы используете, показывают иначе, либо код или иллюстрация являются неточными. Вы можете использовать "источник просмотра" для просмотра того, что было отправлено в браузер, и вы увидите, что ваши фиды строк присутствуют.

<?php
echo "Line 1\nLine 2";
?>

Это будет отображаться в вашем браузере как:

Line 1 Line 2

Если вам нужно отправить обычный текст в свой браузер, вы можете использовать что-то вроде:

<?php
header('Content-type: text/plain');
echo "Line 1\nLine 2";
?>

Это выведет:

Line 1
Line 2

Ответ 4

Я уверен, что вы выводите файл html. Проблема заключается в том, что html игнорирует новые строки в источнике, что означает, что вам нужно заменить символы новой строки на <br/>, если вы хотите, чтобы новая строка отображалась на экране.

Ответ 5

nl2br() использование функции для создания новой строки

echo nl2br("Welcome\r\n This is my HTML document", false);

Вышеприведенный пример выводит:

Добро пожаловать
Это мой HTML-документ

Ответ 6

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

error_log("test\n", 3, 'error.log');
error_log("test2\n", 3, 'error.log');

Ответ 7

Это потому, что вы используете апострофы ('). Вместо этого используйте quotationmarks ("). 'Предлагает PHP использовать все, что находится между апострофами буквально.

Ответ 8

Двойные кавычки - это то, что вы хотите. Одиночные кавычки игнорируют escape \. Двойные кавычки также будут оценивать переменные выражения для вас.

Подробнее о этой странице в руководстве по php.

Ответ 9

чтобы поместить \n в двойные кавычки try


$LOG = str_replace('\n', "\n", $LOG);

Ответ 10

Если вы хотите напечатать что-то вроде этого с помощью новой строки (\n) после нее:

<p id = "theyateme">Did it get eaten?</p>

Чтобы распечатать выше, вы должны сделать следующее:

<?php
  print('<p id = "theyateme">Did it get eaten?</p>' . "\n");
?>

Клиентский код сверху:

<p id = "theyateme">Did it get eaten?</p>

Вывод сверху:

Разве его съели?

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

Иногда вам нужно, чтобы PHP печатал \n на страницу вместо того, чтобы давать новую строку, например, в JavaScript-коде (сгенерированном PHP).

ПРИМЕЧАНИЕ об ответе: вы могли бы: например, вы использовали печать вместо эха (мне нравится мое эхо). Это потому, что я предпочитаю печатать над echo и printf, потому что в некоторых случаях он работает лучше (мои случаи обычно), но в этом случае это может быть сделано отлично с помощью эха.