cidr プレフィックス (例: /28) をネットマスク (例: 255.255.255.240) に変換しようとしていますが、このための関数が見つかりませんでした。php に存在しますか? そうでない場合、どうすればこれを行うことができますか?
10434 次
2 に答える
12
これを行うメソッドを含むクラスを作成しました。
function CIDRtoMask($int) {
return long2ip(-1 << (32 - (int)$int));
}
クラス全体をgistとして投稿しました。
于 2011-05-02T12:34:34.440 に答える
6
例 #1:
関数 cidr2NetmaskAddr()
function cidr2NetmaskAddr ($cidr) {
$ta = substr ($cidr, strpos ($cidr, '/') + 1) * 1;
$netmask = str_split (str_pad (str_pad ('', $ta, '1'), 32, '0'), 8);
foreach ($netmask as &$element)
$element = bindec ($element);
return join ('.', $netmask);
}
使用法
echo cidr2NetmaskAddr ('194.234.213.0/28');
出力
255.255.255.240
例 #2:
関数 createNetmaskAddr()
function createNetmaskAddr ($bitcount) {
$netmask = str_split (str_pad (str_pad ('', $bitcount, '1'), 32, '0'), 8);
foreach ($netmask as &$element)
$element = bindec ($element);
return join ('.', $netmask);
}
使用法
echo createNetmaskAddr (28);
出力
255.255.255.240
于 2011-04-19T02:50:22.497 に答える