php有现成的函数
ip2long()
逆函数
long2ip()<?php
echo $n = ip2long("127.0.0.1"); //2130706433
echo long2ip($n); //127.0.0.1
?>
ip2long()
逆函数
long2ip()<?php
echo $n = ip2long("127.0.0.1"); //2130706433
echo long2ip($n); //127.0.0.1
?>
$ips = explode(".",$ip);
$ipc = $ips[0]*16777216 + $ips[1]*65536 + $ips[2]*256 + $ips[3];
return $ipc;
}再问高手,为何要用这些函数将ip转形才能查询,如将IP去.补0好像也能正常查询呀,这些函数是不是多余了192.168.0.35 >> 192168000035
不过计算量是不是有些大了,或许你可以比较一下自己的函数和ip2long那个更适合
function myip2long($ip) {
$ip_arr = explode($ip);
if(count($ip_arr) != 4){
return 0;
}
for($i=0 ;$i<4 ;$i++ ){
if(!is_numeric($ip_arr[$i])){
return 0;
}
else {
$ip_arr[$i] = intval($ip_arr[$i]);
}
}
$n = $ip_arr[0] << 24;
$n += ($ip_arr[1] << 16);
$n += ($ip_arr[2] << 8);
$n += $ip_arr[3];
return $n;
}