<?php
$ip = '127.0.0.1';
function test($ip) {
if (false !== strpos($ip, '/')) {
list($address, $netmask) = explode('/', $ip, 2);
if ($netmask < 1 || $netmask > 32) {
return false;
}
} else {
$address = $ip;
$netmask = 32;
}
$netmask = str_pad(str_pad('', $netmask, '1'), 32, '0');
$in_addr = '';
foreach(array_map('bindec', str_split($netmask, 8)) as $char) {
$in_addr .= pack('C*', $char);
}
$netmask = inet_pton(inet_ntop($in_addr));
$network = (inet_pton($address) & $netmask);
return [inet_ntop($network), inet_ntop($network | ~$netmask)];
}
var_dump(test('127.0.0.1'));
var_dump(test('10.0.0.3/29'));
var_dump(test('192.168.1.16/8'));
- Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- array(2) {
[0]=>
string(9) "127.0.0.1"
[1]=>
string(9) "127.0.0.1"
}
array(2) {
[0]=>
string(8) "10.0.0.0"
[1]=>
string(8) "10.0.0.7"
}
array(2) {
[0]=>
string(9) "192.0.0.0"
[1]=>
string(15) "192.255.255.255"
}
preferences:
151.28 ms | 404 KiB | 194 Q