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

时间:2013-10-24 13:44:10

标签: php html

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

在textarea中显示的数据为

  

LIN1 \ r \ nlin2

它应该像

lin1
lin2

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

7 个答案:

答案 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;
}

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