Her er én måde at gøre det på. IP adresserne bliver konverteret til et heltal og $y ender med at indeholde de bits der er sat som er fælles med alle ip adresserne i første loop. $x bliver 26 efter første loop (minimumsværdien af de tal der står efter '/' i dine segmenter), og efter andet loop ender den med resultatet 24 med dit eksempel, da det er det antal bits der er fælles i starten for alle ip segmenterne.
[code]<?php
$net = array('192.168.1.0/26', '192.168.1.64/26', '192.168.1.128/26');
$x = 32;
$y = pow(2, 32) - 1; // 32-bit integer med alle bits sat
foreach ($net as $segment) {
$tmp = explode('/', $segment);
$x = min($x, $tmp[1]);
$y &= ip2long($tmp[0]);
}
foreach ($net as $segment) {
$tmp = explode('/', $segment);
if ($tmp[0] != '0') {
$x = min(32-strlen(decbin(ip2long($tmp[0]) ^ $y)), $x);
}
}
echo $x;
?>[/code]