前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >强大PHP工具库用处理IPv4和IPv6网络地址

强大PHP工具库用处理IPv4和IPv6网络地址

作者头像
Tinywan
发布2024-04-28 11:06:42
930
发布2024-04-28 11:06:42
举报
文章被收录于专栏:开源技术小栈开源技术小栈

用于处理网络地址(IPv4和IPv6)的PHP库。

安装

代码语言:javascript
复制
composer require s1lentium/iptools

使用

IP运营

IPv4

代码语言:javascript
复制
$ip = new IP('192.168.1.1');
echo $ip->version;// IPv4

IPv6

代码语言:javascript
复制
$ip = new IP('fc00::');
echo $ip->version; // IPv6
从整数、二进制和十六进制解析IP
代码语言:javascript
复制
echo (string)IP::parse(2130706433); // 127.0.0.1
echo (string)IP::parse('0b11000000101010000000000100000001') // 192.168.1.1
echo (string)IP::parse('0x0a000001'); // 10.0.0.1

或者

代码语言:javascript
复制
echo (string)IP::parseLong(2130706433); // 127.0.0.1
echo (string)IP::parseBin('11000000101010000000000100000001'); // 192.168.1.1
echo (string)IP::parseHex('0a000001'); // 10.0.0.1
将IP转换为其他格式
代码语言:javascript
复制
echo IP::parse('192.168.1.1')->bin // 11000000101010000000000100000001
echo IP::parse('10.0.0.1')->hex // 0a000001
echo IP::parse('127.0.0.1')->long // 2130706433
其他
  • maxPrefixLength 地址表示中的最大位数:IPv4为32,IPv6为128。
  • octetsCount IP地址中的八位字节数:IPv4为4,IPv6为16
  • reversePointer 地址的反向DNS PTR的名称:
代码语言:javascript
复制
echo new IP::parse('192.0.2.5')->reversePointer // 5.2.0.192.in-addr.arpa
echo new IP::parse('2001:db8::567:89ab')->reversePointer // b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa
网络操作
代码语言:javascript
复制
echo Network::parse('192.0.0.1 255.0.0.0')->CIDR; // 192.0.0.0/8
echo (string)Network::parse('192.0.0.1/8')->netmask; // 255.0.0.0
echo (string)Network::parse('192.0.0.1'); // 192.0.0.1/32
网络中的IP地址
代码语言:javascript
复制
$excluded = Network::parse('192.0.0.0/8')->exclude(new IP('192.168.1.1'));
foreach($excluded as $network) {
 echo (string)$network . '<br>';
}
代码语言:javascript
复制
192.0.0.0/9
192.128.0.0/11
192.160.0.0/13
192.168.0.0/24
192.168.1.0/32
192.168.1.2/31
...
192.192.0.0/10
网络中的子网
代码语言:javascript
复制
$excluded = Network::parse('192.0.0.0/8')->exclude(new Network('192.168.1.0/24'));
foreach($excluded as $network) {
 echo (string)$network . '<br>';
}
代码语言:javascript
复制
192.0.0.0/9
192.128.0.0/11
192.160.0.0/13
192.168.0.0/24
192.168.2.0/23
...
192.192.0.0/10
将网络拆分为相等的网络
代码语言:javascript
复制
$networks = Network::parse('192.168.0.0/22')->moveTo('24');
foreach ($networks as $network) {
 echo (string)$network . '<br>';
}
代码语言:javascript
复制
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
迭代网络IP地址
代码语言:javascript
复制
$network = Network::parse('192.168.1.0/24');
foreach($network as $ip) {
 echo (string)$ip . '<br>';
}
代码语言:javascript
复制
192.168.1.0
...
192.168.1.255
获取网络主机地址范围:
代码语言:javascript
复制
$hosts = Network::parse('192.168.1.0/24')->hosts // Range(192.168.1.1, 192.168.1.254);
foreach($hosts as $ip) {
	echo (string)$ip . '<br>';
}
代码语言:javascript
复制
192.168.1.1
...
192.168.1.254
计算网络IP地址
代码语言:javascript
复制
echo count(Network::parse('192.168.1.0/24')) // 254

靶场作业

以不同格式定义范围
代码语言:javascript
复制
$range = new Range(new IP('192.168.1.0'), new IP('192.168.1.255'));
$range = Range::parse('192.168.1.0-192.168.1.255');
$range = Range::parse('192.168.1.*');
$range = Range::parse('192.168.1.0/24');
检查IP是否在范围内
代码语言:javascript
复制
echo Range::parse('192.168.1.1-192.168.1.254')->contains(new IP('192.168.1.5')); // true
echo Range::parse('::1-::ffff')->contains(new IP('::1234')); // true
迭代范围IP地址
代码语言:javascript
复制
$range = Range::parse('192.168.1.1-192.168.1.254');
foreach($range as $ip) {
	echo (string)$ip . '<br>';
}
代码语言:javascript
复制
192.168.1.1
...
192.168.1.254
获取适合指定IP地址范围的网络
代码语言:javascript
复制
$networks = Range::parse('192.168.1.1-192.168.1.254')->getNetworks();

foreach($networks as $network) {
 echo (string)$network . '<br>';
}
代码语言:javascript
复制
192.168.1.1/32
192.168.1.2/31
192.168.1.4/30
192.168.1.8/29
192.168.1.16/28
192.168.1.32/27
192.168.1.64/26
192.168.1.128/26
192.168.1.192/27
192.168.1.224/28
192.168.1.240/29
192.168.1.248/30
192.168.1.252/31
192.168.1.254/32
计算范围内的IP地址
代码语言:javascript
复制
echo count(Range::parse('192.168.1.1-192.168.1.254')) // 254
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用
    • IP运营
      • 从整数、二进制和十六进制解析IP
        • 将IP转换为其他格式
          • 其他
            • 网络操作
              • 网络中的IP地址
                • 网络中的子网
                  • 将网络拆分为相等的网络
                    • 迭代网络IP地址
                      • 获取网络主机地址范围:
                      • 靶场作业
                        • 以不同格式定义范围
                          • 检查IP是否在范围内
                            • 迭代范围IP地址
                              • 获取适合指定IP地址范围的网络
                                • 计算范围内的IP地址
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档