Spontane Idee: So ein Array…
$a = array(
    '192.168.11.12/24',
    '62.10.11.12/32',
    '128.10.11.12/8',
    '96.50.51.52/16'
);
…in diese Form überführen…
$a2 = array(
    '192.168.11' => true,
    '62.10.11.12' => true,
    '128' => true,
    '96.50' => true
};
…und dann für jeden Eintrag aus $b in der Form w.x.y.z prüfen, ob w, w.x, w.x.y oder w.x.y.z als Index in $a2 existieren (isset).
Mal zusammengehackt:
<?php
$a = array(
    '192.168.11.12/24',
    '62.10.11.12/32',
    '128.10.11.12/8',
    '96.50.51.52/16'
);
$b = array(
    '192.168.128.0',   // kein Treffer
    '192.168.11.255',  // Treffer
    '62.10.11.255',    // kein Treffer
    '62.10.11.12',     // Treffer
    '128.255.255.255', // Treffer
    '129.255.255.255', // kein Treffer
    '96.50.255.255',   // Treffer
    '97.50.51.52'      // kein Treffer
);
function f(array $a)
{
    $new = array();
    foreach ($a as $item) {
        list($ipv4, $cidr) = explode('/', $item);
        $index = implode('.', array_slice(explode('.', $ipv4), 0, $cidr >> 3));
        $new[$index] = true;
    }
    return $new;
}
function g(array $a2, array $b)
{
    foreach ($b as $item) {
        $parts = explode('.', $item);
        $tmp = '';
        for ($i = 0; $i <= 3; $i++) {
            $tmp .= (('' !== $tmp) ? '.' : '') . $parts[$i];
            if (isset($a2[$tmp])) {
                echo $item . '- Treffer' . "\n";
                continue 2;
            }
        }
        echo $item . ' - kein Treffer' . "\n";
    }
}
$a2 = f($a);
g($a2, $b);
→ Demo