2012-04-29 76 views
-1

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

例如: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

回答

2

我建立了一个库来做IP address manipulation in pure PHP

你不得不这样做:

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

哇,这是真棒。请试试这个!谢谢! – ChrisG 2012-12-14 00:18:53