improved version of philippe-at-cyberabuse.org's answer:
<?php
function 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)));
}
?>