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);