PHP范围 - cidr转换

时间:2017-11-28 10:05:06

标签: php

我在PHP中寻找一个函数,它与Perl's Net::CIDR::range2cidr function

相同

我在Google找到了一些解决方案:

是否有更简单的方法将CIDR转换为范围并返回?

(也许,我错过了PHP中的现有功能吗?)

1 个答案:

答案 0 :(得分:1)

使用s1lentium/iptools composer包解决它。 以下代码:

/**
 * 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(),
    ];
}