IP地址助手PHP库,用于处理IPv4和IPv6地址

v1.1 2020-01-16 05:53 UTC

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)