【问题标题】:php json_encode() automatically added slashes before slashes [duplicate]php json_encode()在斜杠之前自动添加斜杠[重复]
【发布时间】: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。

标签: php arrays json laravel laravel-5


【解决方案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 将负责所有转义。

    【讨论】:

      猜你喜欢
      • 2017-05-12
      • 2015-10-23
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 2019-01-13
      • 2021-11-21
      • 2016-11-27
      相关资源
      最近更新 更多