반응형
[함수] ip range to cidr list
php.net 에 댓글로 적혀있는 바이너리 문자열로 계산하는것을
멋있는(?) 비트연산으로 고쳤습니다.
이제 cidr list 를 효율적으로 인덱싱하는 것만 하면 되는데 누가 해주겠죠????????
License: BSD
function range2cidrlist($minip, $maxip) {
$minip = ip2long($minip);
$maxip = ip2long($maxip);
$cidrs = array();
while($minip <= $maxip) {
$rbit = 1;
$rseq = 0;
$rno = $minip;
while(($minip & $rbit) == 0) {
$tno = $rno | $rbit;
if($tno > $maxip) break;
$rno = $tno;
$rbit <<= 1;
$rseq += 1;
}
$cidrs[] = array(long2ip($minip), 32 - $rseq);
$minip = $rno + 1;
}
return $cidrs;
}
출처 phpschool
반응형
'개발-PHP' 카테고리의 다른 글
[함수] UTF-8 다운로드 파일명 처리 [업데이트] (0) | 2016.03.30 |
---|---|
[함수] 한국 IP대역 체크 (0) | 2016.03.30 |
[함수] crontab 스케쥴링 함수 알고리즘 한번 만들어보았어요 - + (0) | 2016.03.30 |
[함수] [igbinary] php serialize 보다 나은 (0) | 2016.03.30 |
[함수] E_ALL 시 undefined variables 해결 함수 (0) | 2016.03.30 |