2012-04-29 8 views
-1

Как преобразовать сетевую маску в определенную сетевую маску.Преобразование netmasks 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. Как я могу получить аналогичную funcitonality с помощью 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 во все/24s.

Убедитесь, что ipcalc установлен на хост, чтобы выполнить это. Вы можете сделать это с помощью yum install ipcalc в CentOS или apt-get install ipcalc в Ubuntu или cd /usr/ports/net-mgmt/ipcalc/ && make install clean на FreeBSD :)

ответ

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

Wow, что является удивительным. Попробуем! Благодаря! – ChrisG

 Смежные вопросы

  • Нет связанных вопросов^_^