3v4l.org

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