Angularjs - 文本区域中的多行

时间:2015-11-02 01:34:40

标签: php mysql angularjs

我的textarea中有html,用户可以输入一些文字。我可以使用mysqltext属性保存到php表字段中。在插入mysql之前,我会mysql_real_escape_string($data);(出于安全原因)。但是当我从数据库中检索回来时,我会得到

{"bittext":"i 
love
mcD"}

这样我就会收到错误:

  

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

我不知道如何重新格式化它以便我可以将其解析为JSON

更新

我发现我没有添加json_encode($data)功能。现在我可以转

{"bittext":"i 
love
mcD"}

{"bittext":"i\nlove\nmcD"}

但我在使用\n\\n转换为$data = str_replace(array('\r\n', '\r', '\n'),'\\n', $data);时遇到问题。出于某种原因,\\n无效。还有其他办法吗?

UPDATE2: 经过大量的代码处理后,我终于开始工作了:

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

我的首要问题是当logfirephpcore \n时,即使在str_replace($nl,'\\n', $je)之后我才能看到MYVALUE = input() 。但是当我做更多测试并发现它实际上已经工作,即使它在控制台中显示不好。

1 个答案:

答案 0 :(得分:1)

来自mysql_real_escape_string();

的文档
  

mysql_real_escape_string()调用MySQL的库函数   mysql_real_escape_string,它将反斜杠添加到以下内容   字符:\ x00,\ n,\ r,\,',"和\ x1a。

你的插入语句将包含字符串' {" bittext":" i \\ nlove \\ nmcD"}' - 注意我们在这里转义转义字符,这是mysql_real_escape_string()所做的。

将在表格中插入字符串' {" bittext":" i \ nlove \ nmcD"}' - 如果你从mysql客户端进行选择,你应该看到这一点。

在某处,预插入或后选择代码正在处理值并将' \ n'更改为实际换行字节,而不是将其保留为字符串' \ N'#39;

您可以通过运行来修补此问题;

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

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