Эхо-символ новой строки & quot; \ n & quot; как строка в одинарных кавычках

Как я могу отобразить символ новой строки \ n, как если бы он был в одной строке кавычки?

$foo = 'foo';
$nl = getStringWithNewLineCharacter();
$bar = 'bar';

echo $foo . $nl . $bar;

будет выводить:

foo
bar

Что я хочу это:

foo\nbar

(Очевидно, я не контролирую возвращаемое значение функции getStringWithNewLineCharacter ().)

Или по-другому, как я могу заставить переменную интерпретировать как одну строку кавычки?


РЕДАКТИРОВАТЬ

Хотя предоставленные ответы дают обходной путь, реальный вопрос здесь заключается в том, как интерпретировать строковую переменную с двойными кавычками как строковую переменную с одинарными кавычками. Может быть, это невозможно, я не знаю. Чтобы ответить на это, требуется понимание того, как интерпретатор управляет строковыми переменными (чего мне не хватает).

Так :

  • Как определяется «тип кавычки» строки?
  • Это неизменное?
  • Есть ли способ изменить, как интерпретатор будет управлять строковой переменной?

1

Решение

Не совсем уверен, что это то, что вы хотите, но здесь все равно идет.

Я думаю, что вы говорите, что вы не можете контролировать возвращаемое значение getStringWithNewLineCharacter(); и вы думаете, что это возвращается "\n" то есть последовательность управляющих символов новой строки.

Это будет просто преобразовать "\n" в '\n'

<?php

$foo = 'foo';
$nl = "\n";
$bar = 'bar';

echo $foo . $nl . $bar;   // 2 lines
echo PHP_EOL;

$nl = str_replace("\n", '\n', $nl);
echo $foo . $nl . $bar;   // one line
echo PHP_EOL;

РЕЗУЛЬТАТЫ:

foo
bar

foo\nbar

РЕДАКТИРОВАТЬ:

Или, если вы хотите сделать его постоянным хотя бы на время выполнения этого скрипта, выполните:

$nl = str_replace("\n", '\n',getStringWithNewLineCharacter());
2

Другие решения

Вы должны использовать «, а не», как это echo '\n' не echo "\n"

0

Просто избегайте обратной косой черты, которая нейтрализует его поведение:

echo "foo\\nbar";

Вы можете написать это в буквальном смысле, как указано выше, или в команде замены строки, что угодно. Результат один и тот же: буквальные символы \ а также n рядом друг с другом вместо символа перевода строки:

echo $foo . str_replace("\n", "\\n", $nl) . $bar;

Или очевидно:

echo $foo . str_replace("\n", '\n', $nl) . $bar;
0

Как только символ «\ n» находится в переменной, он уже преобразуется в новую строку. Вам нужно будет преобразовать его обратно.

$nl = preg_replace("#\n#", '\n', $nl);
0
<?php
$foo = 'foo';
$nl = htmlspecialchars('\n');
$bar = 'bar';

echo $foo . $nl . $bar;
?>
0
По вопросам рекламы [email protected]