luzrain/

ipcalc

PHP的IPv4/IPv6网络计算器

1.0.3 2019-02-12 19:55 UTC

This package is auto-updated.

Last update: 2024-09-15 15:20:59 UTC


README

安装

使用composer安装

composer require "luzrain/ipcalc:~1.0.0"

基本用法

此类同时考虑了IPv6和IPv4地址。您可以通过以下两种方式创建此类:传递一个IP和CIDR掩码

require 'vendor/autoload.php';

$net = new IPCalc\IP('fe80:dead:15:a:bad:1dea:11:2234/93');
// or
$net = new IPCalc\IP('fe80:dead:15:a:bad:1dea:11:2234', 93);

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

$net->getVersion();    // 6                                  # IP version
$net->getIp();         // fe80:dead:15:a:bad:1dea:11:2234    # Actual IP address
$net->getCidr()        // 93                                 # Cidr prefix
$net->getNetmask()     // ffff:ffff:ffff:ffff:ffff:fff8::    # Netmask in printable format
$net->getNetwork()     // fe80:dead:15:a:bad:1de8::          # Address of current IP network (for ipv4)
$net->getBroadcast()   // fe80:dead:15:a:bad:1def:ffff:ffff  # Broadcast address of network (for ipv4)
$net->getHostMin()     // fe80:dead:15:a:bad:1de8::          # First IP adress
$net->getHostMax()     // fe80:dead:15:a:bad:1def:ffff:ffff  # Last IP adress

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

echo new IPCalc\IP('192.168.1.10/24');

上面的代码将返回

{
    "version":4,
    "ip":"192.168.1.10",
    "cidr":24,
    "netmask":"255.255.255.0",
    "network":"192.168.1.0",
    "broadcast":"192.168.1.255",
    "hostmin":"192.168.1.1",
    "hostmax":"192.168.1.254"
}

备注

尽管IPv6不使用网络和广播的概念,但仍需要这些范围来进行包含性搜索。此外,IPv6有一个子网段,但仍可以进行超网/子网划分,这也被考虑在内。