将 转换为文本区域中的换行符(不使用<br>标签)


Converting to line breaks in a textarea (not using a <br> tag) in PHP

我已经搜索了整个网站和谷歌,无法找到一个可行的解决方案。有解决办法,但似乎没有一个对我有用。

我有一个文本区域作为表单的输入,以及在显示要编辑的表单时的输出(可编辑)。我有一个文本区域,像这样:

echo '<textarea>'.$resolution.'</textarea>';

如果我输入一些有换行符的东西,它被解释为'r'n,只要有回车。例子:

Input: 
    This is a
    test.
Output:
    This is a''r''n''r''ntest.

现在,我发现通过使用stripslashes删除额外的斜杠很简单,如下所示:

$resolution = stripslashes($resolution);

…但是,现在输出是:

This is a'r'n'r'ntest.

我不知道如何将'r'n转换为换行符(也就是说,不使用
标记,因为那只会输出
在不支持HTML的文本区域内。我尝试了以下所有方法,但都不起作用:

//Effort 1
$resolution = trim($resolution);
//Effort 2
$resolution = nl2br($resolution);
//Effort 3
$resolution = htmlentities($resolution);
//Effort 4
$resolution = preg_replace("''r''n","<br>",$resolution);

我现在完全不知所措。有人能解释一下吗?

PHP有两种不同的字符串构建模式。第一个使用单引号,并且绝对不会进行变量或特殊字符替换。这就是你在用的。

第二个是在双引号字符串中嵌入变量,这应该可以工作:

$text = str_replace("''", "'", $text);
echo "<textarea>$text</textarea>";

'r'n现在应该是有效的回车符和换行符,而不是字符"斜杠",然后是'r'或'n'

在str_replace

上使用双引号
str_replace(''r',"'r",str_replace(''n',"'n",$resolution));
http://php.net/manual/en/language.types.string.php

或者如果你真的在处理双反斜杠:

str_replace('''''r',"'r",str_replace('''''n',"'n",$resolution));