<?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.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.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:
127.88 ms | 408 KiB | 5 Q