Skip to content

Instantly share code, notes, and snippets.

@zyphlar
Last active December 23, 2016 03:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zyphlar/a523bceb95717484df90057a3ebb2acd to your computer and use it in GitHub Desktop.
Save zyphlar/a523bceb95717484df90057a3ebb2acd to your computer and use it in GitHub Desktop.
Calculating subnet masks with PHP
string(14) "--- Binary ---"
string(44) "Base 11000000101010000000000100001110"
string(44) "Mask 11111111111111111111111000000000"
string(44) "BaseNet 11000000101010000000000000000000"
string(44) "Incrementer 00000000000000000000001000000000"
string(44) "Final 11000000101010000000001000000000"
string(10) "--- IP ---"
string(24) "Base 192.168.1.14"
string(25) "Mask 255.255.254.0"
string(23) "BaseNet 192.168.0.0"
string(19) "Incrementer 0.0.2.0"
string(23) "Final 192.168.2.0"
<?php
$base = ip2long("192.168.1.14");
$mask = ip2long("255.255.254.0");
$baseNet = $base & $mask;
$incrementer = ip2long("255.255.255.255") - $mask + 1;
var_dump("--- Binary ---");
var_dump("Base ".str_pad(base_convert($base, 10, 2), 32, "0", STR_PAD_LEFT));
var_dump("Mask ".str_pad(base_convert($mask, 10, 2), 32, "0", STR_PAD_LEFT));
var_dump("BaseNet ".str_pad(base_convert($baseNet, 10, 2), 32, "0", STR_PAD_LEFT));
var_dump("Incrementer ".str_pad(base_convert($incrementer, 10, 2), 32, "0", STR_PAD_LEFT));
var_dump("Final ".str_pad(base_convert($incrementer + $baseNet, 10, 2), 32, "0", STR_PAD_LEFT));
var_dump("--- IP ---");
var_dump("Base ".long2ip($base));
var_dump("Mask ".long2ip($mask));
var_dump("BaseNet ".long2ip($baseNet));
var_dump("Incrementer ".long2ip($incrementer));
var_dump("Final ".long2ip($incrementer + $baseNet));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment