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 array(inet_ntop($network), inet_ntop($network | ~$netmask)); } var_dump(test('127.0.0.1/24')); var_dump(test('10.0.0.3/29')); var_dump(test('192.168.1.16/8'));

preferences:
36.98 ms | 402 KiB | 5 Q