处理包含'\ n'转义序列的数据库结果

时间:2012-05-17 17:13:50

标签: php mysql textarea

我将它从textarea插入数据库:

Hello

How 

Are 

You

它会像这样保存:

Hello\n\nHow \n\nAre \n\nYou 

但是当我通过nl2br将其显示在textarea中后,它仍会显示为Hello\n\nHow \n\nAre \n\nYou。如何使其显示方式与将其插入数据库的方式相同?

这是我用来获取值的jQuery代码:

           var getURL = WEBROOT + "index.php/Connection/getConfig/" + rowID;
                    var editConfig = $("<div>");
                    editConfig.load(getURL, function(){
                        var configValue = $(this).html();
                        console.log(configValue);
                        var button = $("<button>", {
                                html: "submit"
                            }),
                            textArea = $("<textarea>",{
                                width: "350px", height: "600px"
                            }).val(nl2br(configValue));
                        $(this).text("").append(
                            textArea,
                            $("<br/>"),
                            button
                        ).dialog({
                            title: "Editing Config for id " + rowID,
                            modal: true,
                            width: 405
                        });
                  });

6 个答案:

答案 0 :(得分:3)

升级到答案

听起来您将字符序列\n存储在数据库中,而不是由转义码表示的实际换行符。在这种情况下nl2br不会有任何区别(它会替换HTML <br/>标记的实际换行符,这甚至不是您想要的<textarea>中的换行符}) - 您需要改为使用stripcslashes

但是,我建议修复数据库中的数据,以便不转义其内容。

答案 1 :(得分:0)

您无法格式化文本区域中的文本。您可以使用div代替。使用str_replace()替换“\ n”

答案 2 :(得分:0)

这可能不是正确的做法,但在将\n存储在表格中之前,您始终可以使用<br>str_replace替换为{{1}}。然后,您只需输出消息,所有内容都将正确格式化。

答案 3 :(得分:0)

nl2br将换行符转换为br html标记,你不能只在div中渲染textarea中的html。如果你想显示带换行符的文字,那么最好使用Tiny-Mce http://www.tinymce.com/tryit/full.php,这样就可以轻松实现

答案 4 :(得分:0)

我不认为您使用echo nl2br($var)来显示textarea内部。原因是,如果你这样做,那么\r\n就会变成<br/>而你会看到

Hello<br/>How <br/>Are <br/>You 

使用以下代码显示textarea内部:

echo $var

使用以下代码显示外部textarea,即表格单元格或DIV等。

echo nl2br($var)

答案 5 :(得分:0)

我把它放在一个新的HTML文件中:

<form>
<textarea>
abc
def
123
</textarea>
</form>

要将换行符放入文本区域,不应使用<br> - 而应使用强硬回报。你有PHP脚本输出"\n"到浏览器,看看会发生什么。