我的textarea
中有html
,用户可以输入一些文字。我可以使用mysql
将text
属性保存到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);
我的首要问题是当log
与firephpcore
\n
时,即使在str_replace($nl,'\\n', $je)
之后我才能看到MYVALUE = input()
。但是当我做更多测试并发现它实际上已经工作,即使它在控制台中显示不好。
答案 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);
但是,我建议您跟踪代码,以查看管道中转义字符串的哪些位置转换为实际值。