我已经搜索过每一篇文章。
问题是,在我的情况下,使用偶尔会在其文本中输入反斜杠。我将输入数据序列化并将其作为JSON放入数据库中。我通过PHP(JSON编码和JSON解码)来做到这一点。
但每次有人输入\反斜杠,我的json无效。我通过在编码之前用正斜杠替换反斜杠来临时修复此问题。我读到的每篇文章都是关于删除斜杠,更改它们,但我找不到的是关于在文本中保留实际的反斜杠。
我怎么会意识到这一点?任何帮助非常感谢。
编辑: 由于我得到了像xmass礼物这样的投票,我会在这里放一些代码:
page.php,包含我的HTML表单,这是一个翻录版本:
<tr><input type="text" value="default" onchange="showValues()" id="name_0" name="name[0]" style="float:left">
<input type="text" value="" onchange="showValues()" id="weight_0" name="weight[0]" style="float:left">
</tr>
<tr>
<input type="text" value="default" onchange="showValues()" id="name_1" name="name[1]" style="float:left">
<input type="text" value="" onchange="showValues()" id="weight_1" name="weight[1]" style="float:left">
</tr>
然后,用户可以提交按钮,该按钮完全调用此js动作:
function save(){
var formData = $jq("#rows :input").serializeArray();
$jq.ajax({
type: "POST",
url: "saveform",
data: formData,
}).done(function( result ) {
$jq("#msg").html(result);
});
}
最后,还有saveform函数:
$jsondata = json_encode($postdata) //this is the data passed by ajax request
//and here is an sql query pushing this to the database
当$ postdata包含反斜杠时,json_encode会中断。我得到无效的json或其他东西。我对postdata进行了一些处理,并且我还使用htmlentities来编码来自用户输入的html字符(因为我还有richtext输入)。可能是因为HTML实体吗?
答案 0 :(得分:0)
听起来好像你被PHP的magic quotes击中了,它们在PHP 5.4中删除了,因为这会导致奇怪且难以发现的错误。
您必须在php.ini
文件中disable them,如下所示:
magic_quotes_gpc = Off