php cidr 网络掩码前缀

发布于 2024-11-02 01:39:12 字数 95 浏览 0 评论 0原文

我正在寻找将 cidr 前缀(例如 /28)转换为网络掩码(例如 255.255.255.240),但尚未找到用于此目的的函数,php 中是否存在函数?如果没有,我该怎么做呢?

I'm looking to convert a cidr prefix (e.g. /28) to a netmask (e.g. 255.255.255.240) and have not located a function for this, does one exist in php? If not, how would I go about doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼性发作 2024-11-09 01:39:12

我编写了一个 class ,其中包含执行此操作的方法。

function CIDRtoMask($int) {
    return long2ip(-1 << (32 - (int)$int));
}

我将整个课程发布为 gist

I wrote a class that contains a method that does this.

function CIDRtoMask($int) {
    return long2ip(-1 << (32 - (int)$int));
}

I posted the entire class as a gist.

萌化 2024-11-09 01:39:12

示例#1:

函数 cidr2NetmaskAddr()

  function cidr2NetmaskAddr ($cidr) {

    $ta = substr ($cidr, strpos ($cidr, '/') + 1) * 1;
    $netmask = str_split (str_pad (str_pad ('', $ta, '1'), 32, '0'), 8);

    foreach ($netmask as &$element)
      $element = bindec ($element);

    return join ('.', $netmask);

  }

用法

  echo cidr2NetmaskAddr ('194.234.213.0/28');

输出

255.255.255.240


示例 #2:

函数 createNetmaskAddr()

  function createNetmaskAddr ($bitcount) {

    $netmask = str_split (str_pad (str_pad ('', $bitcount, '1'), 32, '0'), 8);

    foreach ($netmask as &$element)
      $element = bindec ($element);

    return join ('.', $netmask);

  }

用法

  echo createNetmaskAddr (28);

输出

255.255.255.240

Example #1:

function cidr2NetmaskAddr()

  function cidr2NetmaskAddr ($cidr) {

    $ta = substr ($cidr, strpos ($cidr, '/') + 1) * 1;
    $netmask = str_split (str_pad (str_pad ('', $ta, '1'), 32, '0'), 8);

    foreach ($netmask as &$element)
      $element = bindec ($element);

    return join ('.', $netmask);

  }

Usage

  echo cidr2NetmaskAddr ('194.234.213.0/28');

Output

255.255.255.240


Example #2:

function createNetmaskAddr()

  function createNetmaskAddr ($bitcount) {

    $netmask = str_split (str_pad (str_pad ('', $bitcount, '1'), 32, '0'), 8);

    foreach ($netmask as &$element)
      $element = bindec ($element);

    return join ('.', $netmask);

  }

Usage

  echo createNetmaskAddr (28);

Output

255.255.255.240

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文