Created
October 24, 2011 16:04
-
-
Save linickx/1309388 to your computer and use it in GitHub Desktop.
php network functions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function cidr2mask($netmask) { | |
$netmask_result=""; | |
for($i=1; $i <= $netmask; $i++) { | |
$netmask_result .= "1"; | |
} | |
for($i=$netmask+1; $i <= 32; $i++) { | |
$netmask_result .= "0"; | |
} | |
$netmask_ip_binary_array = str_split( $netmask_result, 8 ); | |
$netmask_ip_decimal_array = array(); | |
foreach( $netmask_ip_binary_array as $k => $v ){ | |
$netmask_ip_decimal_array[$k] = bindec( $v ); // "100" => 4 | |
} | |
$subnet = join( ".", $netmask_ip_decimal_array ); | |
return $subnet; | |
} | |
echo cidr2mask("23"); | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
# REFERENCE - http://stackoverflow.com/questions/2942299/converting-cidr-address-to-subnet-mask-and-network-address | |
$ipNetmask = "192.168.1.12/16"; | |
list($ip, $netmask) = split( "/", $ipNetmask ); | |
$ip_elements_decimal = split( "[.]", $ip ); | |
$netmask_result=""; | |
for($i=1; $i <= $netmask; $i++) { | |
$netmask_result .= "1"; | |
} | |
for($i=$netmask+1; $i <= 32; $i++) { | |
$netmask_result .= "0"; | |
echo $netmask_result; | |
} | |
$netmask_ip_binary_array = str_split( $netmask_result, 8 ); | |
$netmask_ip_decimal_array = array(); | |
foreach( $netmask_ip_binary_array as $k => $v ){ | |
$netmask_ip_decimal_array[$k] = bindec( $v ); // "100" => 4 | |
$network_address_array[$k] = ( $netmask_ip_decimal_array[$k] & $ip_elements_decimal[$k] ); | |
} | |
$network_address = join( ".", $network_address_array ); | |
print_r($network_address); | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
# REFERENCE http://stackoverflow.com/questions/594112/matching-an-ip-to-a-cidr-mask-in-php5 | |
function cidr_match($ip, $range) | |
{ | |
list ($subnet, $bits) = split('/', $range); | |
$ip = ip2long($ip); | |
$subnet = ip2long($subnet); | |
$mask = -1 << (32 - $bits); | |
$subnet &= $mask; # nb: in case the supplied subnet wasn't correctly aligned | |
return ($ip & $mask) == $subnet; | |
} | |
if (cidr_match("10.128.0.0", "10.128.1.0/16")) { | |
echo 'match'; | |
} else { | |
echo 'no match'; | |
} | |
echo cidr_match("10.128.0.0", "10.128.1.0/16"); | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function mask2cidr($mask) { | |
$mask = split( "[.]", $mask ); | |
$bits = 0; | |
foreach ($mask as $octect) { | |
$bin = decbin($octect); | |
$bin = str_replace ( "0" , "" , $bin); | |
$bits = $bits + strlen($bin); | |
} | |
return $bits; | |
} | |
echo mask2cidr("255.255.252.0"); | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
# Checks if string is in the right format to be an ip address | |
# Reference: http://php.net/manual/en/function.preg-match.php | |
function valid_ip($ip) { | |
return preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" . | |
"(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $ip); | |
} | |
echo valid_ip("192.168.10.10"); // 1 (true) | |
echo valid_ip("fruit"); // 0 (false) | |
echo valid_ip("999.999.999.999"); // 0 (false) | |
echo valid_ip("255.255.255.255"); // 1 (true) | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment