pearadmin - layui - area 省市区联动 js插件 省市区编码更新到最新方法
从这个开源项目 https://gitee.com/xiangyuecn/AreaCity-JsSpider-StatsGov 获取最新的json数据
https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/#tools
导出为自定义按钮 导出 area_format_user.json 文件
执行 area.php 提示 area_data.js 文件已更新。
打开 area_data.js 复制新生成的areaList对象,替换掉 area.js 里的areaList 即可更新到当前最新的(2025年)的省市区数据。
2025-07-18 ff
<?php // 读取 area.json 文件 - 注意文件必须utf-8不带bom头的否则报错 $jsonContent = file_get_contents('area_format_user.json'); // 判断文件读取是否成功 if ($jsonContent === false) { // 文件读取失败,输出错误信息 die('无法读取文件,请确认文件路径和权限是否正确'); } else { // 文件读取成功,继续执行后续操作 $areaJson = json_decode($jsonContent, true); // 判断JSON解析是否成功 if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解析失败:' . json_last_error_msg()); } // 初始化省、市、区(县)列表 $provinceList = []; $cityList = []; $countyList = []; // 处理省、市、区(县)数据 function processData($data, &$provinceList, &$cityList, &$countyList) { foreach ($data as $province) { $provinceId = substr($province['ext_id'], 0, 6); $provinceName = $province['ext_name']; $provinceList[$provinceId] = $provinceName; if (isset($province['childs'])) { foreach ($province['childs'] as $city) { $cityId = substr($city['ext_id'], 0, 6); $cityName = $city['ext_name']; $cityList[$cityId] = $cityName; if (isset($city['childs'])) { foreach ($city['childs'] as $county) { $countyId = substr($county['ext_id'], 0, 6); $countyName = $county['ext_name']; $countyList[$countyId] = $countyName; } } } } } } processData($areaJson, $provinceList, $cityList, $countyList); // 生成新的 area_data.js 内容 $jsContent = "var areaList = {\n"; $jsContent .= " province_list: {\n"; foreach ($provinceList as $id => $name) { $jsContent .= " \"$id\": \"$name\",\n"; } $jsContent = rtrim($jsContent, ",\n") . "\n },\n"; $jsContent .= " city_list: {\n"; foreach ($cityList as $id => $name) { $jsContent .= " \"$id\": \"$name\",\n"; } $jsContent = rtrim($jsContent, ",\n") . "\n },\n"; $jsContent .= " county_list: {\n"; foreach ($countyList as $id => $name) { $jsContent .= " \"$id\": \"$name\",\n"; } $jsContent = rtrim($jsContent, ",\n") . "\n }\n};"; // 将新内容写入 area_data.js 文件 file_put_contents('area_data.js', $jsContent); echo "area_data.js 文件已更新。"; } ?>
源码:邮箱 309 搜索标题 pearadmin-layui-area 省市区联动 js插件 省市区编码更新到最新方法