meklis / ipv4-subnet-calculator
用于计算子网掩码和其他无类(CIDR)网络信息的网络计算器。
3.2
2022-01-23 17:38 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- phploc/phploc: *
- phpmd/phpmd: ^2.6
- phpstan/phpstan: *
- phpunit/phpunit: 6.*
- satooshi/php-coveralls: ^2.0
- squizlabs/php_codesniffer: 2.*
This package is not auto-updated.
Last update: 2024-09-16 05:37:11 UTC
README
用于计算子网掩码和其他无类(CIDR)网络信息的网络计算器。
功能
给定一个IP地址和CIDR网络大小,它计算网络信息并提供一站式聚合报告。
计算
- IP地址
- 网络大小
- 子网掩码
- 网络部分
- 主机部分
- 网络中的IP地址数量
- 网络中可寻址主机的数量
- IP地址范围
- 广播地址
- 最小和最大主机
- 所有IP地址
- IP地址是否在子网中
提供点分十进制、十六进制和二进制格式的每个数据,以及四元组数组。
聚合网络计算报告
- 关联数组
- JSON
- 字符串
- 输出到STDOUT
标准接口
- JsonSerializable
设置
将库添加到项目中的 composer.json
文件
{ "require": { "markrogoyski/ipv4-subnet-calculator": "3.*" } }
使用 composer 安装库
$ php composer.phar install
Composer将在您的vendor文件夹中安装IPv4 Subnet Calculator。然后您可以将以下内容添加到.php文件中,以使用自动加载使用库。
require_once(__DIR__ . '/vendor/autoload.php');
或者,在命令行上使用composer要求并安装IPv4 SubnetCalculator
$ php composer.phar require markrogoyski/ipv4-subnet-calculator:3.*
最低要求
- PHP 5.5
用法
创建新的SubnetCalculator
// For network 192.168.112.203/23 $sub = new IPv4\SubnetCalculator('192.168.112.203', 23);
各种网络信息
$number_ip_addresses = $sub->getNumberIPAddresses(); // 512 $number_hosts = $sub->getNumberAddressableHosts(); // 510 $address_range = $sub->getIPAddressRange(); // [192.168.112.0, 192.168.113.255] $addressable_host_range = $sub->getAddressableHostRange(); // [192.168.112.1, 192.168.113.254] $network_size = $sub->getNetworkSize(); // 23 $broadcast_address = $sub->getBroadcastAddress(); // 192.168.113.255
IP地址
$ip_address = $sub->getIPAddress(); // 192.168.112.203 $ip_address_quads = $sub->getIPAddressQuads(); // [192, 168, 112, 203] $ip_address_hex = $sub->getIPAddressHex(); // C0A870CB $ip_address_binary = $sub->getIPAddressBinary(); // 11000000101010000111000011001011
子网掩码
$subnet_mask = $sub->getSubnetMask(); // 255.255.254.0 $subnet_mask_quads = $sub->getSubnetMaskQuads(); // [255, 255, 254, 0] $subnet_mask_hex = $sub->getSubnetMaskHex(); // FFFFFE00 $subnet_mask_binary = $sub->getSubnetMaskBinary(); // 11111111111111111111111000000000
网络部分
$network = $sub->getNetworkPortion(); // 192.168.112.0 $network_quads = $sub->getNetworkPortionQuads(); // [192, 168, 112, 0] $network_hex = $sub->getNetworkPortionHex(); // C0A87000 $network_binary = $sub->getNetworkPortionBinary(); // 11000000101010000111000000000000
主机部分
$host = $sub->getHostPortion(); // 0.0.0.203 $host_quads = $sub->getHostPortionQuads(); // [0, 0, 0, 203] $host_hex = $sub->getHostPortionHex(); // 000000CB $host_binary = $sub->getHostPortionBinary(); // 00000000000000000000000011001011
最小和最大主机
$min_host = $sub->getMinHost(); // 192.168.112.1 $min_host_quads = $sub->getMinHostQuads(); // [192, 168, 112, 1] $min_host_hex = $sub->getMinHostHex(); // C0A87001 $min_host_binary = $sub->getMinHostBinary(); // 11000000101010000111000000000001 $max_host = $sub->getMaxHost(); // 192.168.113.254 $max_host_quads = $sub->getMaxHostQuads(); // [192, 168, 113, 254] $max_host_hex = $sub->getMaxHostHex(); // C0A871FE $max_host_binary = $sub->getMaxHostBinary(); // 11000000101010000111000111111110
所有IP地址
foreach ($sub->getAllIPAddresses() as $ip_address) { echo $ip_address; } foreach ($sub->getAllHostIPAddresses() as $host_address) { echo $host_address; }
IP地址是否在子网中
$bool_true = $sub->isIPAddressInSubnet('192.168.112.5'); $bool_false = $sub->isIPAddressInSubnet('192.168.111.5');
报告
打印报告
$sub->printSubnetReport(); /* 192.168.112.203/23 Quads Hex Binary ------------------ --------------- -------- -------------------------------- IP Address: 192.168.112.203 C0A870CB 11000000101010000111000011001011 Subnet Mask: 255.255.254.0 FFFFFE00 11111111111111111111111000000000 Network Portion: 192.168.112.0 C0A87000 11000000101010000111000000000000 Host Portion: 0.0.0.203 000000CB 00000000000000000000000011001011 Number of IP Addresses: 512 Number of Addressable Hosts: 510 IP Address Range: 192.168.112.0 - 192.168.113.255 Broadcast Address: 192.168.113.255 Min Host: 192.168.112.1 Max Host: 192.168.113.254 */
数组报告
$sub->getSubnetArrayReport(); /* Array ( [ip_address_with_network_size] => 192.168.112.203/23 [ip_address] => Array ( [quads] => 192.168.112.203 [hex] => C0A870CB [binary] => 11000000101010000111000011001011 ) [subnet_mask] => Array ( [quads] => 255.255.254.0 [hex] => FFFFFE00 [binary] => 11111111111111111111111000000000 ) [network_portion] => Array ( [quads] => 192.168.112.0 [hex] => C0A87000 [binary] => 11000000101010000111000000000000 ) [host_portion] => Array ( [quads] => 0.0.0.203 [hex] => 000000CB [binary] => 00000000000000000000000011001011 ) [network_size] => 23 [number_of_ip_addresses] => 512 [number_of_addressable_hosts] => 510 [ip_address_range] => Array ( [0] => 192.168.112.0 [1] => 192.168.113.255 ) [broadcast_address] => 192.168.113.255 [min_host] => 192.168.112.1 [max_host] => 192.168.113.254 ) */
JSON报告
$sub->getSubnetJSONReport(); /* { "ip_address_with_network_size": "192.168.112.203/23", "ip_address": { "quads": "192.168.112.203", "hex": "C0A870CB", "binary": "11000000101010000111000011001011" }, "subnet_mask": { "quads": "255.255.254.0", "hex": "FFFFFE00", "binary": "11111111111111111111111000000000" }, "network_portion": { "quads": "192.168.112.0", "hex": "C0A87000", "binary": "11000000101010000111000000000000" }, "host_portion": { "quads": "0.0.0.203", "hex": "000000CB", "binary": "00000000000000000000000011001011" }, "network_size": 23, "number_of_ip_addresses": 512, "number_of_addressable_hosts": 510, "ip_address_range": [ "192.168.112.0", "192.168.113.255" ], "broadcast_address": "192.168.113.255", "min_host": "192.168.112.1", "max_host": "192.168.113.254" } */
字符串报告
$string_report = $sub->getPrintableReport(); /* 192.168.112.203/23 Quads Hex Binary ------------------ --------------- -------- -------------------------------- IP Address: 192.168.112.203 C0A870CB 11000000101010000111000011001011 Subnet Mask: 255.255.254.0 FFFFFE00 11111111111111111111111000000000 Network Portion: 192.168.112.0 C0A87000 11000000101010000111000000000000 Host Portion: 0.0.0.203 000000CB 00000000000000000000000011001011 Number of IP Addresses: 512 Number of Addressable Hosts: 510 IP Address Range: 192.168.112.0 - 192.168.113.255 Broadcast Address: 192.168.113.255 Min Host: 192.168.112.1 Max Host: 192.168.113.254 */
打印 - 字符串表示
print($sub); /* 192.168.112.203/23 Quads Hex Binary ------------------ --------------- -------- -------------------------------- IP Address: 192.168.112.203 C0A870CB 11000000101010000111000011001011 Subnet Mask: 255.255.254.0 FFFFFE00 11111111111111111111111000000000 Network Portion: 192.168.112.0 C0A87000 11000000101010000111000000000000 Host Portion: 0.0.0.203 000000CB 00000000000000000000000011001011 Number of IP Addresses: 512 Number of Addressable Hosts: 510 IP Address Range: 192.168.112.0 - 192.168.113.255 Broadcast Address: 192.168.113.255 Min Host: 192.168.112.1 Max Host: 192.168.113.254 */
标准接口
JsonSerializable
$json = json_encode($sub);
单元测试
$ cd tests
$ phpunit
标准
IPv4 Subnet Calculator (PHP) 遵循以下标准
- PSR-1 - 基本编码标准 (http://www.php-fig.org/psr/psr-1/)
- PSR-2 - 编码风格指南 (http://www.php-fig.org/psr/psr-2/)
- PSR-4 - 自动加载 (http://www.php-fig.org/psr/psr-4/)
许可证
IPv4 Subnet Calculator (PHP) 在MIT许可证下授权。