<?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