2012-04-29 78 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