我正在尝试将数据显示到textarea中,该数据是从我通过其他表单提交的表中提取的。输入新行时会出现此问题。
在textarea中显示的数据为
LIN1 \ r \ nlin2
它应该像
lin1
lin2
我已经尝试过nl2br但它没有按预期工作。 我怎样才能使事情变得优化。感谢
答案 0 :(得分:5)
输出数据时,可以使用stripcslashes()
解决此问题。
请注意,上述方法与stripslashes()
不同,后者在这种情况下不起作用。
我尝试使用nl2br
,但它也不够。
答案 1 :(得分:4)
我希望 str_replace
能够拯救你。
<?php
$str='lin1\r\nlin2';
$str=str_replace('\r\n','<br>',$str);
echo $str;
<强>输出:强>
lin1
lin2
答案 2 :(得分:4)
这是一个常见问题,最常见的答案是ln2br或str_replace。
然而,这只是创建不必要的代码。
实际上,问题几乎总是在显示数据之前通过mysql转义函数运行数据。可能是在你正在保存它的过程中。相反,请转义数据以进行保存,但显示未转义的版本。
答案 3 :(得分:2)
<?php echo str_replace('\r\n', "\r\n", $text_with_line_breaks); ?>
见单引号&amp;双引号这是一个技巧。
新手的完美解决方案。
答案 4 :(得分:1)
我建议使用\ r \ n的双引号,例如&#34; \ r \ n&#34;。我从来没有用单引号正常工作。
答案 5 :(得分:0)
你在插入/更新声明
中引用过多你遇到这个问题可以解决下一步的问题
<?php
$str = 'lin1\r\nlin2';
$solved_str = str_replace(array("\\r","\\n"), array("\r","\n"), $str);
var_dump($str,$solved_str);
但是你需要在引号转义符号上检查插入/更新语句
答案 6 :(得分:0)
对于非文本区域,请使用此功能
import java.util.Scanner;
public class whatIsWrong {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int size = 0;
System.out.printf("%nEnter number of names desired names: ");
size = input.nextInt();
String[] names = new String[size];
for(int i = 0; i < size; i++) {
System.out.printf("%nName #%d: ", i +1);
names[i] = input.nextLine();
}
}
}
对于文本区域,请使用此功能
function escapeNonTextarea($string){
$string=str_replace(array('\n','\r\n','\r'),array("<br>","<br","<br>"),$string);
return $string;
}
调用适当的函数并传递参数