improved version of philippe-at-cyberabuse.org's answer:<?phpfunction cidrconv($net) { $start = strtok($net,"/"); $n = 3 - substr_count($net, "."); if ($n > 0) { for ($i = $n;$i > 0; $i--) $start .= ".0"; } $bits1 = str_pad(decbin(ip2long($start)), 32, "0", STR_PAD_LEFT); $net = (1 << (32 - substr(strstr($net, "/"), 1))) - 1; $bits2 = str_pad(decbin($net), 32, "0", STR_PAD_LEFT); $final = ""; for ($i = 0; $i < 32; $i++) { if ($bits1[$i] == $bits2[$i]) $final .= $bits1[$i]; if ($bits1[$i] == 1 and $bits2[$i] == 0) $final .= $bits1[$i]; if ($bits1[$i] == 0 and $bits2[$i] == 1) $final .= $bits2[$i]; } return array($start, long2ip(bindec($final))); }?>