2017-11-28 15 views
0

PHPで関数を探していますが、これはPerl's Net::CIDR::range2cidr functionと同じです。


私はグーグルで、いくつかの解決策が見つかりました:(['10.0.0.0', '10.255.255.255']のために正常に動作していない)PHP範囲 - cidr変換


CIDRを範囲に変換して戻す簡単な方法はありますか?

(たぶん、私はPHPの既存の機能を見逃したのか?)

答えて

0

s1lentium/iptools作曲パッケージを使用して、それを解決しています。 次のコード:

/** 
* Perl's "Net::CIDR::range2cidr()" function. 
* 
* @param string $from 
* @param string $to 
* 
* @return array 
*/ 
function range2cidr($from, $to) { 
    $networks = IPTools\Range::parse("{$from}-{$to}")->getNetworks(); 

    return array_map(function(IPTools\Network $network) { 
     return (string)$network; 
    }, $networks); 
} 

/** 
* @param string $cidr 
* 
* @return array 
*/ 
function cidr2range($cidr) { 
    /** @var IPTools\Range $range */ 
    $range = IPTools\Network::parse($cidr)->hosts; 

    return [ 
     (string)$range->getFirstIP(), 
     (string)$range->getLastIP(), 
    ]; 
} 
関連する問題