문제

I have a php string with a lot of information to be displayed inside a textarea html element.

I don't have access to that textarea nor to the script (if any) that generates it.

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

$somestring as NOT been "worked" with trim or filter_var. Nothing.

On the textfield, I get the \n printed on the textarea hence, not interpreted.

What can I try in order to have those new lines applied?

Thanks in advance.

도움이 되었습니까?

해결책

\n, \r and other backslash escape characters only works in double quotes and heredoc. In single quotes and nowdoc (the single quote version of heredoc), they are read as literal \n and \r.

Example:

<?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+

Read more about this behaviour in the PHP manual


EDIT:
The reason single and double quotes behave differently is because they are both needed in different situations.

For instance, if you would have a string with a lot of new lines, you would use double quotes:

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

But if you would use a string with a lot of backslashes, such as a file name (on Windows) or a regular expression, you would use single quotes to simplify it and avoid having unexpected problems by forgetting to escape a backslash:

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

다른 팁

Try wrapping $somestring with " (double quotes) instead of ' (single quotes)

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

http://php.net/types.string <-- extremely useful reading
this article is a cornerstone of PHP knowledge and it's just impossible to use PHP without it.
unlike most of manual pages which are are just for quick reference, this very page is one which every developer should learn by heart.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top