换行符在 textarea 中显示为 \r\n

Posted

技术标签:

【中文标题】换行符在 textarea 中显示为 \\r\\n【英文标题】:line breaks showing up as \r\n in textarea换行符在 textarea 中显示为 \r\n 【发布时间】:2013-11-03 06:25:38 【问题描述】:

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

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

lin1\r\nlin2

应该是这样的

lin1
lin2

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

【问题讨论】:

您可以使用 javascript 解决此问题。 \r 和 \n 不是像 这样的纯 html。看看这个:***.com/questions/863779/… ***.com/questions/3059091/…可能重复 【参考方案1】:

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

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

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

【讨论】:

stripcslashes 在将数据输出回 textarea 时效果很好,nl2br 适用于常规 html 输出。谢谢你的回答。【参考方案2】:

希望str_replace能救你。

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

输出:

lin1
lin2

【讨论】:

text.replace 不是更好的解决方案吗?【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:
<?php echo str_replace('\r\n', "\r\n", $text_with_line_breaks); ?>

查看单引号和双引号这是一个技巧。

新手的完美解决方案。

【讨论】:

很高兴知道它对您有所帮助。 这个是一样的,但是在php端:$observacao = str_replace(PHP_EOL,'\r\n', $observacao);【参考方案5】:

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

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

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

var_dump($str,$solved_str);

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

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

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;

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

【讨论】:

以上是关于换行符在 textarea 中显示为 \r\n的主要内容,如果未能解决你的问题,请参考以下文章

Textarea 在 IE 中不显示换行符

如何在html textarea POST数据中保留换行符

爆炸 textarea php(换行)

IE中的换行问题

处理textarea的空格和换行

Textarea 仅在换行符处换行