换行符在 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的主要内容,如果未能解决你的问题,请参考以下文章