网上的三级联动数据大多只有省市县,且数据可能并不完整,由此可以借用京东的三级联动数据,除了可以获得省市县的数据外还可以获取主干街道的数据,和京东下单时所填写的配送地址一样比较全面,适合电商网站使用。
数据源
http://fts.jd.com/area/get?fid=' . $fid . '&callback=getAreaList_callbackF&sceneval=2
通过以上URL,替换中间的$fid
可以获取到不同省、直辖市的下主要区域。
下面是全国主要省、直辖市的id
$baseArea = [
'1' => '北京',
'2' => '上海',
'3' => '天津',
'4' => '重庆',
'5' => '河北',
'6' => '山西',
'7' => '河南',
'8' => '辽宁',
'9' => '吉林',
'10' => '黑龙江',
'11' => '内蒙古',
'12' => '江苏',
'13' => '山东',
'14' => '安徽',
'15' => '浙江',
'16' => '福建',
'17' => '湖北',
'18' => '湖南',
'19' => '广东',
'20' => '广西',
'21' => '江西',
'22' => '四川',
'23' => '海南',
'24' => '贵州',
'25' => '云南',
'26' => '西藏',
'27' => '陕西',
'28' => '甘肃',
'29' => '青海',
'30' => '宁夏',
'31' => '新疆',
'32' => '台湾',
'84' => '钓鱼岛',
'52993' => '港澳'
];
例如这样:
代码
<?php
/**
* @author 心语难诉
* @version 1.0
* @url https://xinyu19.com
* @filename JDArea.php
* @des 京东 省、市、县、街道数据获取
*/
class JDArea{
/**
* [$baseArea 全国省、直辖市ID]
*/
public static $baseArea = [
'1' => '北京',
'2' => '上海',
'3' => '天津',
'4' => '重庆',
'5' => '河北',
'6' => '山西',
'7' => '河南',
'8' => '辽宁',
'9' => '吉林',
'10' => '黑龙江',
'11' => '内蒙古',
'12' => '江苏',
'13' => '山东',
'14' => '安徽',
'15' => '浙江',
'16' => '福建',
'17' => '湖北',
'18' => '湖南',
'19' => '广东',
'20' => '广西',
'21' => '江西',
'22' => '四川',
'23' => '海南',
'24' => '贵州',
'25' => '云南',
'26' => '西藏',
'27' => '陕西',
'28' => '甘肃',
'29' => '青海',
'30' => '宁夏',
'31' => '新疆',
'32' => '台湾',
'84' => '钓鱼岛',
'52993' => '港澳'
];
/**
* [getAll 循环获取所有数据]
*/
public static function getAll(){
$areaArr = [];
foreach (self::$baseArea as $key => $value) {
$areaArr[$key]['id'] = $key;
$areaArr[$key]['name'] = $value;
$areaArr[$key]['area'] = self::requestApi($key);
foreach ($areaArr[$key]['area'] as $k => $v) {
echo "数据获取成功:{$areaArr[$key]['name']}----{$v['name']}\r\n";
$province = $areaArr[$key]['name'];
$city = $v['name'];
$areaArr[$key]['area'][$k]['county'] = self::requestApi($v['id']);
foreach ($areaArr[$key]['area'][$k]['county'] as $item) {
echo "数据获取成功:{$province}----{$city}----{$item['name']}\r\n";
}
}
}
return $areaArr;
}
/**
* [requestApi 数据请求函数]
* @return [type] [json]
*/
public static function requestApi($fid){
$API_URL = 'http://fts.jd.com/area/get?fid=' . $fid . '&callback=getAreaList_callbackF&sceneval=2';
$result = file_get_contents($API_URL);
$result = str_replace('getAreaList_callbackF(', '', $result);
$result = str_replace(')', '', $result);
$result = json_decode($result, true);
return $result;
}
}
$res = JDArea::getAll();
DEMO
说明
代码中只做了简单的数据生成,可根据自身需求生成json文件或者动态入库。PS:代码仅供研究学习
钓鱼岛,点赞啊!
钓鱼岛能邮到吗
文章不错支持一下
联动数据是什么意思
就是类似省市级这样的多级筛选
来看看,学习一下|´・ω・)ノ
收藏
很不错呀,虽然不懂技术,给博主点个赞!
哇,很不错的接口数据,学习了。
技术与文笔并存的博主,关注一波
蟹蟹~向你学习!ヾ(≧∇≦*)ゝ
这个感觉就像编程里用正则取值一样
这些天都没更新,工作太忙太累了
技术资料,学习了。
→_→小意思,这些东西都是微不足道的,为了水文章哈哈