首頁  >  文章  >  後端開發  >  IP位址子網路遮罩計算

IP位址子網路遮罩計算

WBOY
WBOY原創
2016-07-25 08:43:592782瀏覽
IP地址子网掩码计算,返回IP段起止范围、长度、掩码等信息。
  1. /**
  2. * 掩码计算器
  3. * @author WeakSun <52132522@qq.com>
  4. * @param string $ip IP
  5. * @param numeric $bits 掩码
  6. * @return array 返回结果集
  7. */
  8. function netmask($ip, $bits = 24) {
  9. $result = [
  10. 'start' => 0, //第一个IP
  11. 'end' => 0, //最后一个IP
  12. 'length' => 0, //包含的IP个数
  13. 'netmask' => (~pow(2, 32 - $bits)) 1, //子网掩码
  14. 'networkSegment' => 0, //IP段
  15. 'bcast' => 0//广播地址
  16. ];
  17. $result['length'] = abs($result['netmask']) - 2;
  18. $result['networkSegment'] = ip2long($ip) & $result['netmask'];
  19. $result['start'] = $result['networkSegment'] 1;
  20. $result['end'] = $result['networkSegment'] $result['length'];
  21. $result['bcast'] = $result['end'] 1;
  22. return $result;
  23. }
复制代码
  1. list($ip, $bits) = explode('/', '192.168.1.5/25');
  2. $tmpArr = netmask($ip, $bits);
  3. foreach ($tmpArr as $k => &$v) {
  4. $k != 'length' && $v = long2ip($v);
  5. }
  6. echo '
    ' . var_export($tmpArr, true).'
    ';
复制代码
  1. array (</li>
    <li>  'start' => '192.168.1.1',</li>
    <li>  'end' => '192.168.1.126',</li>
    <li>  'length' => 126,</li>
    <li>  'netmask' => '255.255.255.128',</li>
    <li>  'networkSegment' => '192.168.1.0',</li>
    <li>  'bcast' => '192.168.1.127',</li>
    <li>)
复制代码
子網路遮罩


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn