-1

如何将网络掩码转换为特定的网络掩码。

示例:127.0.0.0/16 转换为 /24 网络掩码。

它应该输出如下内容:

127.0.0.0/24
127.0.1.0/24
127.0.2.0/24
127.0.2.0/24

等一直到 127.0.255.0/24。

这如何通过 PHP 来实现?我找到了这个工具: http: //jodies.de/ipcalc它是用 PERL 编码的。如何使用 PHP 获得类似的功能?

我发现了这个:http: //jasonkolpin.com/classes/ipcalc/demo.php虽然它似乎坏了.. 可能会尝试修复它。

更新已解决:我基本上运行:$exec = shell_exec("/usr/local/bin/ipcalc 127.0.0.0/16 24 -b -n");并解析出 Network: 字段。这基本上将 127.0.0.0/16 转换为所有 /24s。

确保在主机上安装了 ipcalc 以完成此操作。您可以通过yum install ipcalc在 CentOS、apt-get install ipcalcUbuntu 或cd /usr/ports/net-mgmt/ipcalc/ && make install cleanFreeBSD 中使用来做到这一点 :)

4

1 回答 1

2

我已经构建了一个库来在纯 PHP 中进行 IP 地址操作

你必须这样做:

<?php
use Leth\IPAddress\IP;
$current_cidr = 16;
$desired_cidr = 24;
$net = IP\NetworkAddress::factory('127.0.0.0', $current_cidr);
$subnets = $net->split($desired_cidr - $current_cidr);
于 2012-09-01T21:59:10.213 回答