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.33, 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.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
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:
171.04 ms | 404 KiB | 227 Q