79654326

Date: 2025-06-05 11:11:47
Score: 0.5
Natty:
Report link

Here is a short, simple and fast solution.

function is_ip_in_cidr($ip, $cidr)
{
  list($net, $mask) = explode('/', $cidr);
  $ip = inet_pton($ip);
  $net = inet_pton($net);
  $prefix = $mask >> 3;
  $shift = 8 - ($mask & 7);

  if (8 == $shift) {
    return !strncmp($ip, $net, $prefix);
  } else {
    $ch_mask = -1 << $shift;
    return !strncmp($ip, $net, $prefix) && ((ord($ip[$prefix]) & $ch_mask) == (ord($net[$prefix]) & $ch_mask));
  }
}
Reasons:
  • Long answer (-0.5):
  • Has code block (-0.5):
  • Unregistered user (0.5):
  • Low reputation (1):
Posted by: firejox