-
IP 주소 변환 소스개발 & 계발/PHP 2018. 4. 25. 01:30반응형
<?
$ip_str = "192.168.2.100/27";
$arr = get_ipaddr_info($ip_str);
print_r($arr);
function get_ipaddr_info($ip_str)
{
$result_arr = array();
$result_arr["result"] = "fail";
if(!strstr($ip_str,"/")) return $result_arr;
$result_arr["result"] = "success";
$result_arr["ip_str"] = $ip_str;
$temp = explode("/", $ip_str);
$ip = trim($temp[0]);
$cidr = trim($temp[1]);
$result_arr["ip"] = $ip;
$result_arr["cidr"] = $cidr;
$subnet = cidr2netmask($cidr);
$network = cidr2network($ip, $cidr);
$result_arr["subnet"] = $subnet;
$result_arr["network"] = $network;
$max = ip2long('255.255.255.255');
$desc_ip = ip2long($network);
$desc_subnet = ip2long($subnet);
$range_bo = $desc_subnet ^ $max;
$range_to = ($desc_ip | $range_bo) - 1;
$end_ipaddr = long2ip($range_to);
$result_arr["end_ipaddr"] = $end_ipaddr;
// IP RANGE check
$start_num = ip2long($network);
$end_num = ip2long($end_ipaddr);
$ip_range_arr = array();
for($a = $start_num ; $a <= $end_num ; $a++)
{
$ip_range_arr[count($ip_range_arr)] = long2ip($a);
} // for($a = $start_num ; $a <= $end_num ; 4a++)
$result_arr["ip_range"] = $ip_range_arr;
return $result_arr;
} // function get_ipaddr_info($ip_str)
function cidr2netmask($cidr)
{
$bin = "";
for( $i = 1; $i <= 32; $i++ )
$bin .= $cidr >= $i ? '1' : '0';
$netmask = long2ip(bindec($bin));
if ( $netmask == "0.0.0.0")
return false;
return $netmask;
}
function cidr2network($ip, $cidr)
{
$network = long2ip((ip2long($ip)) & ((-1 << (32 - (int)$cidr))));
return $network;
}
?>
'개발 & 계발 > PHP' 카테고리의 다른 글
PHP 변수 필터 (validation) (0) 2018.11.19 phpMyAdmin 외부 서버 연동 방법 (0) 2018.11.15 [PHP] AJAX 크로스 도메인 통신 ACCESS-CONTROL-ALLOW-ORIGIN 문제해결 (0) 2017.10.12 [사용자함수] base64 인코딩이 되어 있는지 확인하는 함수 (0) 2016.06.19 [PHP] shell에서 문자열 입력 받기 (0) 2015.06.25