function ipv4_in_range($ip, $range) { if (is_array($range)) { foreach ($range as $iprange) { if (ipv4_in_range($ip, $iprange)) { return true; } } return false; } // Wildcarded range // 192.168.1.* if (!str_contains($range, '-') && str_contains($range, '*')) { $range = str_replace('*', '0', $range) . '-' . str_replace('*', '255', $range); } // Dashed range // 192.168.1.1-192.168.1.100 // 0.0.0.0-255.255.255.255 if (count($twoIps = explode('-', $range)) == 2) { $ip1 = ip2long($twoIps[0]); $ip2 = ip2long($twoIps[1]); return ip2long($ip) >= $ip1 && ip2long($ip) <= $ip2; } if (count($twoIps = explode('-', $range)) == 2) { $ip1 = ip2long($twoIps[0]); $ip2 = ip2long($twoIps[1]); return ip2long($ip) >= $ip1 && ip2long($ip) <= $ip2; } // Masked range or fixed IP // 192.168.17.1/16 or // 127.0.0.1/255.255.255.255 or // 10.0.0.1 return ipv4_match_mask($ip, $range); }
public static function ipV4MatchMask($ip, $network) { return ipv4_match_mask($ip, $network); }