Linux中大部分程式都支援兩種,不過也有例外像是/sbin/ip這個命令,一定要使用ip/mask來表示,於是就有了下面這個函數
P.S 在防呆上還不是很完美,不過加減用吧XD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function mask2dec($str){ | |
$mask=explode('.',$str); | |
if(count($mask)!=4){ | |
return false; | |
} | |
$dm=0; | |
for($n=0;$n<4;$n++){ | |
$h=$mask[$n]; | |
$a=(255 ^ $h); | |
for($m=0;$m<=8;$m++){ | |
if($a===(pow(2,$m)-1)){ | |
$m=(8-$m); | |
if($m<8&&$m>0){ | |
if(($dm%8)===0){ | |
$dm+=$m; | |
}else{ | |
return false; | |
} | |
}else{ | |
$dm+=$m; | |
} | |
break; | |
} | |
if($m===8){ | |
return false; | |
} | |
} | |
} | |
return $dm; | |
} | |
var_dump(mask2dec('255.255.255.0')); | |
var_dump(mask2dec('255.255.255.252')); | |
var_dump(mask2dec('255.255.255.128')); | |
var_dump(mask2dec('24')); | |
?> |
沒有留言:
張貼留言