PHP IP ağ çeviri

2 Cevap php

Nasıl bir IP adresinden gelen bir / 22 ağ adresini alabilir miyim?

Gibi:

/24 of 193.95.221.54 is 193.95.221.0
/16 of 193.95.221.54 is 193.95.0.0
/8 of 193.95.221.54 is 193.0.0.0
/22 of 193.95.221.54 is 193.95.X.0

Ben önbellek alanı ve aramalarının sayısını (GeolP veritabanı 25 MB) korumak için tek bir önbellek girdisi 1024 IP adresleri için GeolP verileri önbelleğe almak istiyorum.

2 Cevap

Bu fonksiyonu kullanmak için,

<?php

function to_netmask($ip, $prefix) {
    $mask = $prefix==0?0:0xffffffff << (32 - $prefix);
    return long2ip(ip2long($ip) & $mask);
}

?>
long2ip(ip2long($addr) & 0xf00)

0xf00 sen düşünebilirsiniz bit'lerinin tamsayı olduğu, örneğin 0xffffff00' for / 24 , '0xffff0000 /16, vs