php json_encode()在斜杠之前自动添加斜杠[重复]
Posted
技术标签:
【中文标题】php json_encode()在斜杠之前自动添加斜杠[重复]【英文标题】:php json_encode() automatically added slashes before slashes [duplicate] 【发布时间】:2017-11-30 03:50:43 【问题描述】:我正在将我的数据以 json 的形式存储到数据库中。用户可以输入引号,所以我在引号之前手动添加斜杠。所以我的数据变成了这样
array:8 [▼
"buttonText" => "Large Button"
"campName" => "Large\'s Button Test"
"buttonSize" => "1"
]
但是当我将其转换为 json 时,json_encode()
函数会在我的斜杠之前自动添加一个斜杠
""buttonText":"Large Button","campName":"Large\\'s Button Test","buttonSize":"1""
为什么要添加额外的斜线,是否有任何选项可以防止这种情况
【问题讨论】:
请提供更多代码。您遇到的情况通常是由于两次实施 json 编码功能而发生的 我想不出任何需要手动添加斜杠的场景。我的印象是您试图阻止 SQL 注入,但您却在破坏数据。 如果你想用反斜杠编码一个值,正确的 JSON 编码是双反斜杠。 为什么首先要在数据中添加反斜杠?! @ravisachaniya — 这是关于正斜杠,而不是反斜杠。 "为什么要添加额外的斜线,有什么选项可以阻止吗?" -- 你想阻止什么?为了防止json_encode()
创建一个有效的JSON?继续并根据需要删除反斜杠。明天你会带着另一个问题回来,抱怨 json_decode()
无法解码你的格式错误的 JSON。
【参考方案1】:
你为什么这样做?手动添加斜线是完全坏事。
您可以使用以下数组生成 JSON:
$arr=array();
$arr['buttonText']="Large Button";
$arr['campName']="Large's Button Test";
$arr['buttonSize']=1;
echo json_encode($arr);
只需使用json_encode()
存储值并使用json_decode()
获取值。
这里有不同的方法:
$arr=array(
'buttonText'=>"Large Button",
'campName'=>"Large's Button Test",
'buttonSize'=>1,
);
echo json_encode($arr);
JSON ENCODE - Manual
JSON DECODE - Manual
json_encode()
自动添加斜杠,json_decode()
删除它。你不需要考虑这个。只是不要担心,要快乐。
【讨论】:
【参考方案2】:添加额外的斜线是因为 json_encode
会这样做。 See this documentation
如果您正在编码数据以存储在数据库中,则无需手动添加斜线。 json_encode
将负责所有转义。
【讨论】:
以上是关于php json_encode()在斜杠之前自动添加斜杠[重复]的主要内容,如果未能解决你的问题,请参考以下文章