Php Angularjs-文本区域中的多行

Php Angularjs-文本区域中的多行,php,mysql,angularjs,Php,Mysql,Angularjs,我的html中有一个textarea,供用户输入一些文本。我可以使用php使用text属性将其保存到mysql表字段中。在插入到mysql之前,我将mysql\u real\u escape\u字符串($data)(出于安全原因)。但当我从数据库中检索到它时,我会 {"bittext":"i love mcD"} 这样,我将得到错误: 错误:JSON解析错误:未终止的字符串 解析@[本机代码] 我不确定如何将其重新格式化,以便将其解析为JSON 更新: 我发现我没有添加json\u enco

我的
html
中有一个
textarea
,供用户输入一些文本。我可以使用
php
使用
text
属性将其保存到
mysql
表字段中。在插入到
mysql
之前,我将
mysql\u real\u escape\u字符串($data)(出于安全原因)。但当我从数据库中检索到它时,我会

{"bittext":"i 
love
mcD"}
这样,我将得到错误:

错误:JSON解析错误:未终止的字符串 解析@[本机代码]

我不确定如何将其重新格式化,以便将其解析为
JSON

更新:

我发现我没有添加
json\u encode($data)
函数。现在我可以转身了

{"bittext":"i 
love
mcD"}
进入

但是我无法使用
$data=str\u replace(数组('\r\n','\r','\n'),'\\n',$data)将
\n
转换为
\\n
。由于某种原因,
\\n
不工作。还有别的办法吗

更新2: 在对代码进行了大量修改之后,我终于让它开始工作了:

     $je = json_encode($rs,JSON_PRETTY_PRINT);
     $nl = array('\r\n', '\r', '\n');
     $je = str_replace($nl,'\\n', $je);

我的第一个问题是当我用
Firehpcore
记录它时,我只能看到
\n
即使在
str\u replace($nl,'\\n',$je)
之后。但我做了更多的测试,发现它实际上已经工作了,尽管它在控制台中显示得不好。

来自
mysql\u real\u escape\u string()的文档

mysql\u real\u escape\u string()调用mysql的库函数 mysql\u real\u escape\u字符串,它在反斜杠前面加上以下内容 字符:\x00、\n、\r、\、'、“和\x1a

insert语句将包含字符串“{”BITEXT:“i\\nlove\\nmcD”}”-注意,我们在这里转义转义字符,这就是
mysql\u real\u escape\u string()
所做的

它将在您的表中插入字符串“{”bitext:“i\nlove\nmcD”}”-如果您从mysql客户端进行选择,您应该看到这一点

在某个地方,预插入或后选择您的代码正在处理该值并将“\n”更改为实际的换行字节,而不是将其保留为字符串“\n”

你可以通过跑步来修补这个问题

$data = str_replace(array("\r\n", "\r", "\n"), "\\n", $data);

但是,我建议您回溯代码,查看管道中转义字符串转换为实际值的位置。

不知何故,我无法执行
str\u替换(数组(“\r\n”、“\r”、“\n”)、“\\n”、$data)
,因为
“\\n”
can不是字符串。我尝试了
str\u替换(数组(“\r\n”、”等随机组合\r“,“\n”),“///”,$data)
它可以工作。还有其他方法可以做到这一点吗?经过大量测试,我意识到它确实可以工作。尽管它在控制台上显示为
\n
,但它确实可以工作。
$data = str_replace(array("\r\n", "\r", "\n"), "\\n", $data);