如何从IP地址获取/ 22网络地址?
像:
/24 of 193.95.221.54 is 193.95.221.0
/16 of 193.95.221.54 is 193.95.0.0
/8 of 193.95.221.54 is 193.0.0.0
/22 of 193.95.221.54 is 193.95.X.0
我想使用单个缓存条目缓存1024个IP地址的GeoIP数据,以节省缓存空间和查找次数(GeoIP数据库为25 MB)。
答案 0 :(得分:7)
您可以使用此功能
<?php
function to_netmask($ip, $prefix) {
$mask = $prefix==0?0:0xffffffff << (32 - $prefix);
return long2ip(ip2long($ip) & $mask);
}
?>
答案 1 :(得分:3)
long2ip(ip2long($addr) & 0xf00)
其中0xf00
是要设置的位所在的整数,例如0xffffff00' for
/ 24 , '0xffff0000
/16
等等。