littledevnl / iptools
用于处理IP和网络的小型包
v1.2
2021-04-12 13:36 UTC
Requires
- php: >=7.4
Requires (Dev)
- infection/infection: ^0.20.2
- phpunit/phpunit: ^9.5
- symplify/easy-coding-standard: ^9.0
This package is auto-updated.
Last update: 2024-09-12 20:36:25 UTC
README
此包是一套用于处理IP地址和网络的工具。
很多内部结构都受到了S1lentium/IPTools的启发,但当我使用那个包时,我发现自己开始将所有需要的功能封装在单独的类中。这促使我创建了自己的包。
目前状态相当原始,但请随意使用。我会尽最大努力不更改接口和外观。
安装
composer require littledevnl/iptools
入门
use Littledev\IPTools\Address; use Littledev\IPTools\Network; use Littledev\IPTools\Iterator\AddressIterator; use Littledev\IPTools\Family\IPFamily; $ip = Address::parse($_SERVER['REMOTE_ADDR']); if ($ip->family() === IPFamily::v6()) { echo 'Good for you!'; } $network6 = Network::parse('2001:db8::/64'); if ($network6->contains($ip)) { echo 'You use an IP which is reserved for documentation.'; } $localNetwork = Network::parse('127.0.0.1/24'); if ($localNetwork->contains($ip)) { echo 'No place like localhost.'; } $iterator = new AddressIterator($localNetwork); foreach ($iterator as $address) { echo 'In local network: ' . $address->address(); }
目标
- 无依赖。
- 一组用于解析和操作IP地址和网络的工具
- 实用类应通过公共父类进行扩展
变更日志
- [v0.1] IP地址和网络的解析。
- [v0.2]
constains
现在可以接受网络和地址。通用化 - [v0.3] 网络迭代器
- [v0.4] 网络列表
- [v1.0] 重构接口
- [v1.1] 修复了composer PHP要求,支持PHP7.4及以上版本
- [v1.2] 修复了较短的inAddr输入
限制
尚未形成一个完整的工具集,这只是开始。
由于没有外部依赖(如任意精度数字),因此无法执行某些操作。例如,计算IPv6网络中的主机数。您可以使用bcmath自己实现,请参考下面的示例。
use Littledev\IPTools\Network; use Littledev\IPTools\Family\IPFamily; $net = Network::parse('2001:db8::/64'); $numbersOfAddresses = bcpow('2', (string)(IPFamily::v6()->maxPrefix() - $net->subnet()->prefix()));