获得一个国家所有 ip 段, 随机生成国内 ip 地址的缩水实现
注意: $ip_long 数组中后 5 个值在 64 位系统中可能是错误的 (下面代码中 $ip_long 数组的后五个值在 32 位系统中为负数, 64 位系统中为正数, 前五个值在 64 位系统中也可能有错误)
32 位系统
echo ip2long(172.16.1.63);
结果 -1408237249
64 位操作系统
echo ip2long(172.16.1.63);
所有 ip 地址网段下载
http://www.ipaddresslocation.org/ip_ranges/get_ranges.php
缩水随机生成国内 ip 地址
总共有 1600 多个网段, 只取了其中 10 个确定是国内的网段
使用了 2 个 php 函数
ip2long($ip) 把 ip 转为 int
long2ip($int_ip) 把 int 转回 ip
- <?php
- function ip()
- {
- $ip_long = array(
- array('607649792', '608174079'), // 36.56.0.0-36.63.255.255
- array('1038614528', '1039007743'), // 61.232.0.0-61.237.255.255
- array('1783627776', '1784676351'), // 106.80.0.0-106.95.255.255
- array('2035023872', '2035154943'), // 121.76.0.0-121.77.255.255
- array('2078801920', '2079064063'), // 123.232.0.0-123.235.255.255
- array('-1950089216', '-1948778497'), // 139.196.0.0-139.215.255.255
- array('-1425539072', '-1425014785'), // 171.8.0.0-171.15.255.255
- array('-1236271104', '-1235419137'), // 182.80.0.0-182.92.255.255
- array('-770113536', '-768606209'), // 210.25.0.0-210.47.255.255
- array('-569376768', '-564133889'), // 222.16.0.0-222.95.255.255
- );
- $rand_key = mt_rand(0, 9);
- return $ip = long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
- }
- ?>
来源: https://www.php1.cn/detail/php-d68c255875.html