You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP生成JSON数组时出现多余斜杠的问题

解决PHP生成JSON数组时出现多余斜杠的问题

兄弟,我太懂这种踩坑的感觉了!PHP转JSON出多余斜杠大多是这几个常见问题,我给你挨个梳理:

1. 不小心重复执行了JSON编码

这是最常见的情况——你可能先把数组转成了JSON字符串,然后又不小心对这个字符串再转了一次JSON,这时候原本的引号就会被转义成\",自然就出现多余斜杠了。

举个错误示范:

$output = array(...); // 你的数组
$json = json_encode($output);
$json = json_encode($json); // 这里重复编码,必出问题!
echo $json;

解决办法:确保只调用一次json_encode($output),直接输出或者使用这个结果就行。

2. 手动给字符串加了不必要的转义

如果你在构建数组的时候,给字符串用了addslashes这类转义函数,然后再用json_encode,就会造成重复转义——因为json_encode本身会自动处理字符串的转义需求,不需要你手动干预。

错误示例:

$first_name = addslashes("robin");
$output = array(array("first_name" => $first_name, ...));
echo json_encode($output);

解决办法:去掉所有手动添加的addslashes调用,如果已经有转义的字符串,用stripslashes(数组的话用递归处理的stripslashes_deep)清理后再编码。

3. 老环境开启了magic_quotes_gpc(PHP5.4+已移除)

如果你的PHP版本比较老(低于5.4),可能开启了magic_quotes_gpc配置,这个配置会自动对GET/POST/COOKIE的参数添加转义斜杠,导致你数组里的字符串自带斜杠,转JSON时就会出现多余的。

解决办法:

  • 优先升级PHP版本(毕竟老版本不安全);
  • 如果没法升级,递归处理数组去掉转义:
function stripslashes_deep($value) {
    $value = is_array($value) ?
                array_map('stripslashes_deep', $value) :
                stripslashes($value);
    return $value;
}
$output = stripslashes_deep($output);
$json = json_encode($output);

正确的代码示例

针对你的数组,正确的写法应该是这样的,不需要额外操作:

<?php
$output = array(
    array(
        "first_name"=>"robin",
        "last_name"=>"sahoo",
        "reg_no"=>12,
        "paper_code"=>"BA001",
        "subject"=>"Mathematics"
    ),
    array(
        "first_name"=>"robin",
        "last_name"=>"sahoo",
        "reg_no"=>12,
        "paper_code"=>"BA002",
        "subject"=>"History"
    ),
    array(
        "first_name"=>"Rama",
        "last_name"=>"Nayidu",
        "reg_no"=>13,
        "paper_code"=>"BA001",
        "subject"=>"Geology"
    )
);

// 直接编码输出,无多余操作
$json = json_encode($output);
echo $json;

如果你的字符串里包含/,不想让它被转义成\/,可以加上JSON_UNESCAPED_SLASHES参数:

$json = json_encode($output, JSON_UNESCAPED_SLASHES);

内容的提问来源于stack exchange,提问作者satya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:58:37