php - Angularjs - 文本区域中的多行

标签 php mysql angularjs

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

{"bittext":"i 
love
mcD"}

这样我会得到错误:

Error: JSON Parse error: Unterminated string parse@[native code]

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

更新:

我发现我没有添加json_encode($data)函数。现在我可以转了

{"bittext":"i 
love
mcD"}

进入

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

但是我在使用 $data = str_replace(array('\r\n', '\r', '\n'), '\\n', $data);.由于某种原因 \\n 不工作。还有其他方法吗?

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

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

我最初的问题是,当我使用 firephpcore log 时,我只能看到 \n,即使在 str_replace($nl ,'\\n', $je).但随着我进行更多测试,发现它实际上已经可以工作,尽管它在控制台中显示不佳。

最佳答案

来自 mysql_real_escape_string() 的文档;

mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.

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

这会将字符串 '{"bittext":"i\nlove\nmcD"}' 插入到您的表中 - 如果您从 mysql 客户端进行选择,这就是您应该看到的内容。

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

您可以通过运行来修补它;

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

但是,我建议您通过代码进行回溯,以查看转义字符串在管道中的哪个位置被转换为实际值。

关于php - Angularjs - 文本区域中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33469404/

相关文章:

php - Codeigniter,来自数据库的动态菜单

javascript - AngularJS中登录成功后才重定向到页面并隐藏菜单

java - 启用csrf时,angularjs和spring security给出405错误

php - 如何选择按日期分组的 SQL 结果

phpcassa连接池

php - 如果可能的话,我将如何从 ajax 调用中设置一个 php 数组?

javascript - 在 AngularJS 中从表单获取数据而不使用双向数据绑定(bind)

php - PHP 中的 require_once 在移动设备中打印

mysql - 如何在 SQL 中合并排序结果中的拖尾字段?

MYSQL:如何在不插入数据的情况下创建新行并获取新 ID?