+
95
-

回答

<?php

/**
* Notes: 判断IP在不在IP网段内
* @param $ip 要查询的IP地址
* @param $network IP段 例: 192.168.1.1/24
* @return bool
*/
function ip_in_network($ip, $network) {
$ip = (double) (sprintf("%u", ip2long($ip)));
$s = explode('/', $network);
$network_start = (double) (sprintf("%u", ip2long($s[0])));
$network_len = pow(2, 32 - $s[1]);
$network_end = $network_start + $network_len - 1;

if ($ip >= $network_start && $ip <= $network_end) {
return true;
}
return false;
}

var_dump(ip_in_network("192.168.4.5","192.168.1.1/24"));
?>

网友回复

我知道答案,我要回答