3v4l.org

run code in 300+ PHP versions simultaneously
<?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);

preferences:
52.46 ms | 402 KiB | 5 Q