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()在斜杠之前自动添加斜杠[重复]的主要内容,如果未能解决你的问题,请参考以下文章

json_encode() 转义正斜杠

json_encode 添加反斜杠

如何让json_encode不转义斜杠

如何删除 json_encode() 函数上的反斜杠?

php json_encode输出为空问题

json_encode() 转义 / 带有 \ [重复]