-
Notifications
You must be signed in to change notification settings - Fork 103
Expand file tree
/
Copy pathRegion.php
More file actions
120 lines (110 loc) · 3.21 KB
/
Region.php
File metadata and controls
120 lines (110 loc) · 3.21 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
class Region
{
/**
* 是否为直辖市
* @param string $name 名称
* @return bool
*/
public static function isMunicipality($name) {
return in_array($name, [
'北京', '上海', '天津', '重庆'
]);
}
/**
* 是否为特别行政区
* @param string $name 名称
* @return bool
*/
public static function isSAR($name) {
return in_array($name, [
'香港特别行政区', '澳门特别行政区'
]);
}
/**
* 通过座机号码取区号.
*
* @param $mobile 号码
*
* @return bool|string
*/
public function getAreaCodeByPhoneNumber($mobile)
{
$areaCode = '';
$prefix = substr($mobile, 0, 2);
if (in_array($prefix, ['01', '02'])) {
//3位区号
$areaCode = substr($mobile, 0, 3);
} elseif (in_array($prefix, ['03', '04', '05', '06', '07', '08', '09'])) {
//4位区号
$areaCode = substr($mobile, 0, 4);
}
return $areaCode;
}
/**
* 是否为自治区
* @param string $name 名称
* @return bool
*/
public static function isAutonomousRegion($name) {
return in_array($name, [
'内蒙古自治区', '新疆维吾尔自治区', '广西壮族自治区', '宁夏回族自治区', '西藏自治区'
]);
}
/**
* 是否为省份
* @param string $name 名称
* @return bool
*/
public static function isProvince($name) {
return !static::isSAR($name) && !static::isAutonomousRegion($name) && !static::isMunicipality($name);
}
function getRegions($type = 1, $parent_id = 1) {
return $this->where(['region_level' => $type, 'parent_id' => $parent_id])->select();
}
/**
* 省份下的城市
*/
public function getCitysByProvinceId($pid) {
$cityArray = array();
if ($pid > 0) {
$cityArray = $this->getRegions(2, $pid);
}
return $cityArray;
}
/**
* 城市下的地区
*/
public function getDistrictsByCityId($city_id) {
$areaArray = array();
if ($city_id > 0) {
$areaArray = $this->getRegions(3, $city_id);;
}
return $areaArray;
}
/**
* 获取省市区完整名称
*/
public function getFullDistrict($province, $city, $area, $delimiter = '') {
$regions = $this->getAllRegions();
$provinceName = $cityName = $areaName = '';
if ($province > 0 && array_key_exists($province, $regions)) {
$provinceName = $regions[$province];
}
if ($city > 0 && array_key_exists($city, $regions)) {
$cityName = str_replace(['县', '市辖区'], '', $regions[$city]);
}
if ($area > 0 && array_key_exists($area, $regions)) {
$areaName = $regions[$area];
}
return $provinceName . $delimiter . $cityName . $delimiter . $areaName;
}
public function getAllRegions() {
$result = array();
$regions = $this->select();
foreach ($regions as $r) {
$result[$r['region_id']] = $r['region_name'];
}
return $result;
}
}