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);
Output for 5.6.0 - 5.6.27, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.6 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.26, 8.1.0 - 8.1.13
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

preferences:
64.17 ms | 411 KiB | 5 Q