php有现成的函数
ip2long()
逆函数
long2ip()<?php
echo $n = ip2long("127.0.0.1"); //2130706433
echo long2ip($n); //127.0.0.1
?>

解决方案 »

  1.   

    看来我真无知,有这么好用的ip2longfunction ip_num($ip){
    $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
      

  2.   

    楼主:你的算法(在这或许称方法理合适)给人一种耳目一新的感觉
    不过计算量是不是有些大了,或许你可以比较一下自己的函数和ip2long那个更适合
      

  3.   

    ip2long 有 Bug 如果 IP 是这样的 202.096.012.007 这样的有时就会出错。看看我这里的。http://redsoft.yculblog.com/post.879816.html
    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; 
      

  4.   

    http://redsoft.yculblog.com/archive.41644.html再看看我这里。有些总结