我正在尝试将数据显示到 textarea 中,该数据是从我通过另一个表单提交的表中获取的。输入新行时会出现问题。
文本区域中显示的数据如下
lin1\r\nlin2
它应该像
lin1
lin2
我已经尝试过 nl2br,但它没有按预期工作。我怎样才能使事情优化。谢谢
stripcslashes()
输出数据时可以使用此问题来解决。
请注意,上述方法与stripslashes()
在这种情况下不起作用的方法不同。
我尝试使用nl2br
,但也不够。
我希望能str_replace
拯救你。
<?php
$str='lin1\r\nlin2';
$str=str_replace('\r\n','<br>',$str);
echo $str;
输出:
lin1
lin2
这是一个常见问题,最常见的答案是 ln2br 或 str_replace。
然而,这只是创建不必要的代码。
实际上,问题几乎总是您在显示数据之前通过 mysql 转义函数运行数据。可能在您保存它的过程中。相反,转义数据以进行保存,但显示未转义的版本。
<?php echo str_replace('\r\n', "\r\n", $text_with_line_breaks); ?>
请参阅单引号和双引号,这是一个技巧。
新手的完美解决方案。
您在插入/更新语句中过度引用
这个问题在你的情况下你可以解决下一个
<?php
$str = 'lin1\r\nlin2';
$solved_str = str_replace(array("\\r","\\n"), array("\r","\n"), $str);
var_dump($str,$solved_str);
但是您需要检查过引号转义符号上的插入/更新语句
我建议对 \r\n 使用双引号,例如“\r\n”。我从来没有让它与单引号一起正常工作。
对于非文本区域使用此功能
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;
}
调用适当的函数并传递参数