Не вижу новых строк в текстовой области - в чем может быть проблема? - PullRequest
2 голосов
/ 09 сентября 2010

У меня есть строка php с большим количеством информации, которая будет отображаться внутри HTML-элемента textarea.

У меня нет доступа ни к этой текстовой области, ни к скрипту (если есть), который его генерирует.

$somestring = 'first line \nSecond line \nThird line.';

$ somestring как НЕ было "обработано" с помощью trim или filter_var. Ничего такого.

В текстовом поле я получаю \ n напечатанную на текстовой области, следовательно, не интерпретируется.

Что я могу попробовать, чтобы применить эти новые строки?

Заранее спасибо.

Ответы [ 3 ]

7 голосов
/ 09 сентября 2010

Попробуйте обернуть $ somestring в "(двойные кавычки) вместо '(одинарные кавычки)

3 голосов
/ 09 сентября 2010

\n, \r и другие экранирующие символы обратной косой черты работают только в двойных кавычках и в heredoc.В одинарных кавычках и nowdoc (версия heredoc в одинарных кавычках) они читаются как буквальные \n и \r.

Пример:

<?php
echo "Hello\nWorld"; // Two lines: 'Hello' and 'World'
echo 'Hello\nWorld'; // One line: literally 'Hello\nWorld'
echo <<<HEREDOC
Hello\nWorld
HEREDOC; // Same as "Hello\nWorld"
echo <<<'NOWDOC'
Hello\nWorld
NOWDOC; // Same as 'Hello\nWorld' - only works in PHP 5.3.0+

Подробнее об этом поведении см. В Руководство по PHP


РЕДАКТИРОВАНИЕ:
Причина, по которой одинарные и двойные кавычки ведут себя по-разному, заключается в том, что они оба необходимы в разных ситуациях.

Например, если бы у вас была строка с большим количеством новых строк, вы бы использовали двойные кавычки:

echo "This\nstring\nhas\na\nlot\nof\nlines\n";

Но если бы вы использовали строку с большим количеством обратных слешей, таких какимя файла (в Windows) или регулярное выражение, вы можете использовать одинарные кавычки, чтобы упростить его и избежать неожиданных проблем, забыв экранировать обратную косую черту:

echo "C:\this\will\not\work"; // Prints a tab instead of \t and a newline instead of \n
echo 'C:\this\would\work'; // Prints the expected string

echo '/regular expression/'; // Best way to write a regular expression
1 голос
/ 14 сентября 2010
$somestring = "first line \nSecond line \nThird line.";

http://php.net/types.string <- <strong>чрезвычайно полезное чтение
эта статья является краеугольным камнем знания PHP, и без нее просто невозможно использовать PHP.страниц справочника, предназначенных только для быстрого ознакомления, эта страница является той, которую каждый разработчик должен выучить наизусть.

...