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

如何在JSON对象中将空格替换为下划线?PHP加载JSON的处理方法

解决JSON字符串中空格替换为下划线的问题

这问题我之前也碰到过,其实核心就是处理解码后的数组里的字符串内容——毕竟JSON解码成关联数组后,我们就能直接操作里面的每个元素了。

首先,因为JSON结构可能有嵌套(比如数组里套数组),所以最好用递归遍历的方式,确保所有层级的字符串都能被处理。给你写个实用的处理函数:

// 递归遍历数组,将所有字符串中的空格替换为下划线
function replaceSpacesWithUnderscores(&$array) {
    foreach ($array as &$value) {
        if (is_array($value)) {
            // 如果是嵌套数组,继续递归处理
            replaceSpacesWithUnderscores($value);
        } elseif (is_string($value)) {
            // 针对字符串替换空格为下划线
            $value = str_replace(' ', '_', $value);
        }
        // 数字、布尔值这类非字符串类型直接跳过
    }
}

接下来把这个函数和你已有的代码结合起来:

// 加载并解码JSON文件
$json = file_get_contents("world_ita.json");
$data = json_decode($json, true);

// 调用函数处理数组
replaceSpacesWithUnderscores($data);

// 可选:把处理后的数组转回JSON格式,甚至存回文件
$processedJson = json_encode($data, JSON_PRETTY_PRINT);
file_put_contents("world_ita_processed.json", $processedJson);

补充说明:

  • 函数用了引用传递(&),这样会直接修改原数组,不用额外接收返回值,代码更简洁。
  • 如果你的JSON里存在多个连续空格的情况,可以把str_replace(' ', '_', $value)换成preg_replace('/\s+/', '_', $value),这样多个空格会被替换成单个下划线。
  • 要是你只需要处理特定字段(比如只有country或region这类键对应的字符串),可以修改函数,判断键名后再替换:
function replaceSpecificKeys(&$array) {
    foreach ($array as $key => &$value) {
        if (is_array($value)) {
            replaceSpecificKeys($value);
        } elseif (is_string($value) && in_array($key, ['country', 'region'])) {
            // 仅处理指定键名的字符串值
            $value = str_replace(' ', '_', $value);
        }
    }
}

这样就能精准处理你需要的内容啦~

内容的提问来源于stack exchange,提问作者rob.m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:33:21