awsumchan / ip
IP地址助手PHP库,用于处理IPv4和IPv6地址
v1.1
2020-01-16 05:53 UTC
Requires
- php: >=5.3.0
- ext-bcmath: *
This package is auto-updated.
Last update: 2024-09-16 16:31:16 UTC
README
IP地址助手PHP库,用于处理IPv4和IPv6地址。可以将任何IP地址转换为十进制、十六进制或二进制,反之亦然。
备注
此库尚不完整,缺少某些CIDR、子网和其他IP功能。大多数IP转换例程使用BCMATH
进行计算,这意味着此库可能不是最快的。一旦库的状态更加稳定,我可能会开始尝试优化某些部分。
欢迎提交带有缺失功能的pull请求。
示例
翻译例程是IP无关的,这意味着它们不关心您传递的是IPv4还是IPv6地址。所有IP计算都是在十进制
下进行的,这对于存储在数据库中非常合适。
use AwsumChan\IP\IP; use AwsumChan\IP\CIDR: // IPv4 echo '127.0.0.1 = ', IP::inet_ptod('127.0.0.1'), "\n"; echo IP::inet_dtop('2130706433'), " = 2130706433\n"; echo '127.0.0.1 = ', IP::inet_ptoh('127.0.0.1'), " (hex)\n"; // IPv6 echo '2001:4056::1 = ', IP::inet_ptod('2001:4056::1'), "\n"; echo IP::inet_dtop('42541793049812452694190522094162280449'), " = 42541793049812452694190522094162280449\n"; echo '2001:4056::1 = ', IP::inet_ptoh('2001:4056::1'), " (hex)\n"; // CIDR // note: the true CIDR block is calculated from the prefix (the ::1 is ignored) $ip = new CIDR('2001:4056::1/96'); echo "$ip\n", implode(' - ', $ip->getRange()), " (" . number_format($ip->getTotal()) . " hosts)\n";
// expected output:
127.0.0.1 = 2130706433
127.0.0.1 = 2130706433
127.0.0.1 = 7f000001 (hex)
2001:4056::1 = 42541793049812452694190522094162280449
2001:4056::1 = 42541793049812452694190522094162280449
2001:4056::1 = 20014056000000000000000000000001 (hex)
2001:4056::1/96
2001:4056:: - 2001:4056::ffff:ffff (4,294,967,296 hosts)