IP アドレスのサブネット マスクを計算し、IP セグメントの開始範囲と終了範囲、長さ、マスク、その他の情報を返します。
- /**
- * マスク計算機
- * @author WeakSun <52132522@qq.com>
- * @param string $ip IP
- * @param numeric $bits Mask
- * @return array 結果セットを返します
- */
- function netmask($ip, $bits = 24) {
- $result = [
- 'start' => 0, //最初の IP
- 'end' = > 0, //最後の IP
- 'length' => 0, // 含まれる IP の数
- 'netmask' => (~pow(2, 32 - $bits)) + 1, // サブネットマスク
- 'networkSegment' => 0, //IP セグメント
- 'bcast' => 0//ブロードキャスト アドレス
- ];
- $result['length'] = abs($result['netmask']) - 2;
- $result['networkSegment'] = ip2long($ip) & $result['netmask'];
- $result['start'] = $result['networkSegment'] + 1;
- $result[' end'] = $result['networkSegment'] + $result['length'];
- $result['bcast'] = $result['end'] + 1;
- return $result;
- }
コードをコピー
- list($ip, $bits) =explode('/', '192.168.1.5/25');
- $tmpArr = netmask($ip, $bits);
- foreach ($tmpArr as $k = > > $k != 'length' && $v = long2ip($v);
- }
- 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>)
-
-
|
サブネットマスク