ホームページ  >  記事  >  バックエンド開発  >  IPアドレス・サブネットマスクの計算

IPアドレス・サブネットマスクの計算

WBOY
WBOYオリジナル
2016-07-25 08:43:592786ブラウズ
サブネットマスク
IP アドレスのサブネット マスクを計算し、IP セグメントの開始範囲と終了範囲、長さ、マスク、その他の情報を返します。
  1. /**
  2. * マスク計算機
  3. * @author WeakSun <52132522@qq.com>
  4. * @param string $ip IP
  5. * @param numeric $bits Mask
  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 = > > $k != 'length' && $v = long2ip($v);
  4. }
  5. echo '
    ' .'
    ';
コードをコピー
    array (<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.1',</li>
    <li>)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。