6

我正在尝试将数据显示到 textarea 中,该数据是从我通过另一个表单提交的表中获取的。输入新行时会出现问题。

文本区域中显示的数据如下

lin1\r\nlin2

它应该像

lin1
lin2

我已经尝试过 nl2br,但它没有按预期工作。我怎样才能使事情优化。谢谢

4

7 回答 7

9

stripcslashes()输出数据时可以使用此问题来解决。

请注意,上述方法与stripslashes()在这种情况下不起作用的方法不同。

我尝试使用nl2br,但也不够。

于 2016-10-09T07:47:32.980 回答
4

我希望能str_replace拯救你。

<?php
$str='lin1\r\nlin2';
$str=str_replace('\r\n','<br>',$str);
echo $str;

输出:

lin1
lin2
于 2013-10-24T13:46:00.877 回答
4

这是一个常见问题,最常见的答案是 ln2br 或 str_replace。

然而,这只是创建不必要的代码。

实际上,问题几乎总是您在显示数据之前通过 mysql 转义函数运行数据。可能在您保存它的过程中。相反,转义数据以进行保存,但显示未转义的版本。

于 2014-08-27T23:34:33.400 回答
4
<?php echo str_replace('\r\n', "\r\n", $text_with_line_breaks); ?>

请参阅单引号和双引号,这是一个技巧。

新手的完美解决方案。

于 2017-01-30T17:49:51.530 回答
1

您在插入/更新语句中过度引用

这个问题在你的情况下你可以解决下一个

<?php
$str = 'lin1\r\nlin2';
$solved_str = str_replace(array("\\r","\\n"), array("\r","\n"), $str);

var_dump($str,$solved_str);

但是您需要检查过引号转义符号上的插入/更新语句

于 2013-10-24T13:57:11.953 回答
1

我建议对 \r\n 使用双引号,例如“\r\n”。我从来没有让它与单引号一起正常工作。

于 2016-02-15T10:02:33.783 回答
1

对于非文本区域使用此功能

function escapeNonTextarea($string){

    $string=str_replace(array('\n','\r\n','\r'),array("<br>","<br","<br>"),$string);
    return $string;
}

对于文本区域使用此功能

function escapeTextarea($string){

    $string=str_replace(array('\n','\r\n','\r'),array("\n","\r\n","\r"),$string);

    return $string;
}

调用适当的函数并传递参数

于 2018-12-15T11:52:21.603 回答