lifo / ip
用于处理IPv4和IPv6地址的IP地址辅助PHP库
v1.1.1
2022-07-12 15:45 UTC
Requires
- php: >=5.3.0
- ext-bcmath: *
This package is auto-updated.
Last update: 2024-09-05 23:12:48 UTC
README
用于处理IPv4和IPv6地址的IP地址辅助PHP库。可以将任何IP地址转换为十进制、十六进制或二进制,反之亦然。
注意
这个库还不完整,缺少某些CIDR、子网和其他杂项IP功能。大多数IP转换例程使用BCMATH
进行计算,这意味着这个库可能不是最快的。一旦库处于更稳定的状态,我可能会开始尝试优化某些部分。
欢迎提交包含缺失功能的pull请求。
示例
翻译例程对IP地址不敏感,这意味着它们不关心你传入的是IPv4还是IPv6地址。所有IP计算都在十进制
中进行,这对于存储在数据库中非常合适。
use Lifo\IP\IP; use Lifo\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)