我已经搜索了整个网站和谷歌,无法找到一个可行的解决方案。有解决办法,但似乎没有一个对我有用。
我有一个文本区域作为表单的输入,以及在显示要编辑的表单时的输出(可编辑)。我有一个文本区域,像这样:
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));