dtr/ip

PHP 的 IPv4/v6 辅助工具套件

dev-master / 2.2.5.x-dev 2021-04-25 22:05 UTC

This package is not auto-updated.

Last update: 2024-09-19 00:24:20 UTC


README

PHP 的 IPv4/v6 辅助工具套件

用法

此类同时考虑了 IPv6(扩展和压缩)和 IPv4 地址。

您可以通过以下两种方式之一通过 IP 和 CIDR 掩码创建该类

$net = new dTRIP("fe80:dead:15:a:bad:1dea:11:2234/93");
// or
$net = new dTRIP("fe80:dead:15:a:bad:1dea:11:2234", 93);

然后您可以访问网络的不同方面

$net->getIP(); // returns IP
$net->getCIDR(); // returns CIDR
$net->getNetwork() // return Network ID
$net->getBroadcast() // return Broadcast ID

存在一个 __toString() 方法,它将在类对象上返回一个 JSON 编码的字符串

echo new dTRIP("fe80:dead:15:a:bad:1dea::/65");

上面的代码将返回

{
  "ip":"fe80:dead:15:a:bad:1dea::",
  "cidr":"65",
  "netmask":"ffff:ffff:ffff:ffff:8000::",
  "network":"fe80:dead:15:a::",
  "broadcast":"fe80:dead:15:a:7fff:ffff:ffff:ffff"
}

示例

以下是一些示例

ipv4

$net = new dTRIP("10.22.99.199", 28);
echo $net->getNetwork(); // 10.22.99.192

ipv6

$net = new dTRIP("fe80:dead:15:a:bad:1dea:11:2234", 93);
$net->getNetwork(); // fe80:dead:15:a:bad:1de8::
$net->getBroadcast(); // fe80:dead:15:a:bad:1def:ffff:ffff

注意

尽管 IPv6 不使用网络和广播的概念,但范围仍然需要执行包含性搜索。此外,IPv6 有子网段,但仍可以进行超网/子网划分,这一点也得到了考虑。