【问题标题】:Converting netmasks php转换网络掩码 php
【发布时间】:2012-04-29 03:50:34
【问题描述】:

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

示例: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"); 并解析出 Network: 字段。这基本上将 127.0.0.0/16 转换为所有 /24s。

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

【问题讨论】:

    标签: php cidr netmask


    【解决方案1】:

    我已经建立了一个库来做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);
    

    【讨论】:

    • 哇,太棒了。试试这个!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2016-05-06
    • 2018-10-29
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多