athlon1600 / php-cidr-range-optimizer
给定一个IP地址范围列表,将它们合并成可能的最小CIDR列表。
v1.0.2
2024-08-16 19:26 UTC
Requires
- php: >=7.4.0
Requires (Dev)
- phpstan/phpstan: ^1.11
- phpunit/phpunit: >=8.0
This package is auto-updated.
Last update: 2024-09-16 19:46:17 UTC
README
给定一个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