在php中转换网络掩码

在php中转换网络掩码,php,cidr,netmask,Php,Cidr,Netmask,如何将网络掩码转换为特定的网络掩码 示例: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实现这一点?我发现了这个工具:它是用PERL编写的。如何使用PHP获得类似的功能性 我发现了这个:虽然它看起来破了。。可能会尝试修复它 更新已解决:我基本上运行:$exec=shell_exec/usr/local/bin/ipcal

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

示例: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实现这一点?我发现了这个工具:它是用PERL编写的。如何使用PHP获得类似的功能性

我发现了这个:虽然它看起来破了。。可能会尝试修复它

更新已解决:我基本上运行:$exec=shell_exec/usr/local/bin/ipcalc 127.0.0.0/16 24-b-n;并解析出网络:字段。这基本上将127.0.0.0/16转换为all/24


确保主机上安装了ipcalc以完成此操作。您可以在CentOS中使用yum install ipcalc,或在Ubuntu中使用apt get install ipcalc,或在FreeBSD上使用cd/usr/ports/net mgmt/ipcalc/&&make install clean:

我已经构建了一个库

你必须这样做:

<?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);

哇,太棒了。我会试试看!谢谢