Skip to content

Instantly share code, notes, and snippets.

@shenyubao
Last active January 19, 2016 10:52
Show Gist options
  • Save shenyubao/6248109 to your computer and use it in GitHub Desktop.
Save shenyubao/6248109 to your computer and use it in GitHub Desktop.
Check whether the IP belongs to china.
<?php
class IP_Check{
private $ip_china = array(
array(167772160,184549375), //10.0.0.0~10.255.255.255
array(2886729728,2887778303), //172.16.0.0~172.31.255.255
array(3232235520,3232301055), //192.168.0.0~192.168.255.255
array(17563648, 17825791),
array(18350080, 18874367),
array(453509120, 455081983),
array(455344128, 456130559),
array(456294400, 456327167),
array(456572928, 456589311),
array(461373440, 461504511),
array(462422016, 462487551),
array(462684160, 463470591),
array(465043456, 467927039),
array(973996032, 974782463),
array(975044608, 977272831),
array(977403904, 977534975),
array(977567744, 977600511),
array(978452480, 978583551),
array(978796544, 978812927),
array(979599360, 979763199),
array(980680704, 980942847),
array(981467136, 981991423),
array(982515712, 982581247),
array(983171072, 983302143),
array(985661440, 987758591),
array(988807168, 989855743),
array(991952896, 995360767),
array(996868096, 997195775),
array(999751680, 999784447),
array(1000013824, 1000079359),
array(1001127936, 1001390079),
array(1002373120, 1006632959),
array(1006632960, 1008730111),
array(1010237440, 1010302975),
array(1010761728, 1010827263),
array(1017118720, 1019215871),
array(1019346944, 1019478015),
array(1019740160, 1021313023),
array(1021837312, 1021968383),
array(1022033920, 1022099455),
array(1022722048, 1022754815),
array(1022820352, 1022885887),
array(1023148032, 1023213567),
array(1023246336, 1023279103),
array(1023344640, 1023410175),
array(1023692800, 1023696895),
array(1023717376, 1023721471),
array(1023975424, 1023979519),
array(1025245184, 1025277951),
array(1025343488, 1025376255),
array(1026392064, 1026408447),
array(1026523136, 1026539519),
array(1026555904, 1027080191),
array(1029160960, 1029177343),
array(1031798784, 1035993087),
array(1038614528, 1039007743),
array(1039138816, 1039400959),
array(1845886976, 1846018047),
array(1846542336, 1846804479),
array(1848115200, 1848377343),
array(1848639488, 1848705023),
array(1848836096, 1849032703),
array(1849163776, 1849819135),
array(1850212352, 1850343423),
array(1850408960, 1850490879),
array(1850523648, 1850572799),
array(1850736640, 1851523071),
array(1851654144, 1853882367),
array(1855455232, 1855848447),
array(1856372736, 1856503807),
array(1856815104, 1856843775),
array(1856847872, 1856864255),
array(1856880640, 1856888831),
array(1857028096, 1860173823),
array(1860435968, 1860698111),
array(1860706304, 1860714495),
array(1860960256, 1861091327),
array(1861222400, 1862270975),
array(1862270976, 1866465279),
array(1866596352, 1866661887),
array(1866711040, 1866715135),
array(1866743808, 1866751999),
array(1866989568, 1867513855),
array(1867841536, 1867907071),
array(1868283904, 1868292095),
array(1869611008, 1870004223),
array(1870086144, 1870110719),
array(1870135296, 1870462975),
array(1870528512, 1873281023),
array(1873412096, 1873477631),
array(1873543168, 1874329599),
array(1874460672, 1874591743),
array(1874853888, 1876426751),
array(1876787200, 1876885503),
array(1876946944, 1876947967),
array(1876948992, 1876950015),
array(1876951040, 1877475327),
array(1877696512, 1877704703),
array(1877712896, 1877721087),
array(1879048192, 1883504639),
array(1883832320, 1884028927),
array(1884291072, 1884815359),
array(1886224384, 1886257151),
);
public function Is_ChinaIP($ip){
if (is_numeric($ip)) {
$ip = long2ip($ip);
}
$ip = sprintf("%u", ip2long($ip));
$is_china = false;
foreach($this->ip_china as $rule){
if($ip >= $rule[0] && $ip <= $rule[1]){
$is_china = true;
break;
}
}
return $is_china;
}
}
$check = new IP_Check();
var_dump($check->Is_ChinaIP('8.35.201.115')); //USA
var_dump($check->Is_ChinaIP('61.135.152.218')); //China
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment