binIP($ip_address); // Let's store the IP netmask number $this->netmaskNumber = $ip_netmask; // Netmask address $this->netmaskBinair = str_repeat('1', $ip_netmask) . str_repeat('0', 32 - $ip_netmask); $this->netmaskDecimal = $this->decIP($this->netmaskBinair); // Wildcard address $this->wildcardBinair = str_repeat('0', $ip_netmask) . str_repeat('1', 32 - $ip_netmask); $this->wildcardDecimal = $this->decIP($this->wildcardBinair); // Network address $this->networkBinair = substr($binair, 0, $ip_netmask) . str_repeat('0', 32 - $ip_netmask); $this->networkDecimal = $this->decIP($this->networkBinair); // Broadcast address $this->broadcastBinair = substr($binair, 0, $ip_netmask) . str_repeat('1', 32 - $ip_netmask); $this->broadcastDecimal = $this->decIP($this->broadcastBinair); // HostMin address $this->hostminBinair = substr($binair, 0, $ip_netmask) . str_repeat('0', 31 - $ip_netmask) . '1'; $this->hostminDecimal = $this->decIP($this->hostminBinair); // HostMax address $this->hostmaxBinair = substr($binair, 0, $ip_netmask) . str_repeat('1', 31 - $ip_netmask) . '0'; $this->hostmaxDecimal = $this->decIP($this->hostmaxBinair); // Numbers of hosts $this->numberHosts = bindec(substr($this->broadcastBinair, $ip_netmask)) - bindec(substr($this->networkBinair, $ip_netmask)) - 1; } function binIP($address) { $address_array = explode('.', $address); $address_binair = ''; for ($i = 0; $i < 4; $i++) { // Create binair value $binair = decbin($address_array[$i]); // Trim value to the length $binair = trim($binair, 8); // Add zeros at the left to fit to $size $binair = str_repeat('0', 8 - strlen($binair)) . $binair; $address_binair .= $binair; } return $address_binair; } function decIP($binair) { $address_array = array(); for ($i = 0; $i < 4; $i++) { $block = substr($binair, $i * 8, 8) . '
'; $address_array[] = bindec(intval($block)); } return implode('.', $address_array); } function inNetwork($ip_address) { return false; } } $ip = '172.16.0.245'; $network = new Network($ip, 30); echo ' Address: ' . $ip . ' / ' . Network::binIP($ip) . '
Netmask: ' . $network->netmaskDecimal . ' / ' . $network->netmaskBinair . '
Wildcard: ' . $network->wildcardDecimal . ' / ' . $network->wildcardBinair . '
Network: ' . $network->networkDecimal . ' / ' . $network->networkBinair . '
Broadcast: ' . $network->broadcastDecimal . ' / ' . $network->broadcastBinair . '
HostMin: ' . $network->hostminDecimal . ' / ' . $network->hostminBinair . '
HostMax: ' . $network->hostmaxDecimal . ' / ' . $network->hostmaxBinair . '
Hosts/Net: ' . $network->numberHosts . '
'; ?>