如何将网络掩码转换为特定的网络掩码。
示例: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");
并解析出网络:字段。这基本上将 127.0.0.0/16 转换为所有/24。
确保主机上安装了 ipcalc 才能完成此操作。 你可以通过在 CentOS 中使用 yum install ipcalc
、在 Ubuntu 中使用apt-get install ipcalc
、在 FreeBSD 上使用cd /usr/ports/net-mgmt/ipcalc/ && make install clean
来做到这一点:)
我已经构建了一个库来在纯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);