athlon1600/php-cidr-range-optimizer

给定一个IP地址范围列表,将它们合并成可能的最小CIDR列表。

v1.0.2 2024-08-16 19:26 UTC

This package is auto-updated.

Last update: 2024-09-16 19:46:17 UTC


README

Minimum PHP Version GitHub Workflow Status (with event)

给定一个IP地址范围列表,通过以下优化来最小化该列表的大小:

  • 从列表中删除无效的IP地址/范围
  • 删除重复项
  • 删除列表中已经由更大的范围覆盖的IP范围
  • 将相邻的IP范围合并成更大的连续块

⭐ 演示

一个在线工具,使用与该库几乎相同的版本

安装

composer require athlon1600/php-cidr-range-optimizer

用法

将IP地址范围列表构建成CIDRList对象,然后使用RangeOptimizer类进行优化。示例

use ProxyNova\RangeOptimizer\CIDRList;
use ProxyNova\RangeOptimizer\RangeOptimizer;

$ranges = CIDRList::fromArray([
    "192.168.1.0/26",
    "192.168.1.64/27",
    "192.168.1.96/27",
    "10.1.0.0/26",
    "10.1.0.64/26"
]);

// returns new optimized CIDRList object
$optimized = RangeOptimizer::optimize($ranges);

echo $optimized;

输出

10.1.0.0/25
192.168.1.0/25