= $lower_dec) && ($ip_dec <= $upper_dec)); } // 网络范围格式不正确,返回false return false; } } /** * 将ipv4的地址转换为无符号整型 * @param string $ip * @return interger */ public function ipv4ToInt($ip) { $arr = explode('.', $ip); return $arr[0] * pow(256, 3) + $arr[1] * pow(256, 2) + $arr[2] * 256 + $arr[3]; } /** * 将无符号整型转换为ipv4的地址 * 超过2100000000有符号整型限制时,取模计算会出现问题。乘除不会。 * @param int $int * @return string */ public function intToIpv4($int) { $arr = array(); for ($i = 0; $i < 4; $i++) { $arr[$i] = intval($int / pow(256, 3 - $i)); $int = $int - $arr[$i] * pow(256, 3 - $i); } return implode('.', $arr); } /** * 是否合法的IP * * @param string $ip * @return bool */ public function isIp($ip) { return preg_match('/^\d+\.\d+\.\d+\.\d+$/', $ip); } }