承接 dautkom/php.ipv4 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dautkom/php.ipv4

最新稳定版本:1.0.2

Composer 安装命令:

composer require dautkom/php.ipv4

包简介

PHP library for work with IPv4 addresses, subnets and masks

README 文档

README

Library supports ip addresses and subnet masks in the following standard formats:

  • Dotted Decimal (e.g. '192.168.1.10')
  • Dotted Octal (e.g. '0300.0250.0001.0012')
  • Undotted Hexadecimal (e.g. '0xC0A8010A')
  • Dotted Hexadecimal (e.g. '0xC0.0xA8.0x01.0x0A')
  • Long (e.g. '3232235786')
  • Binary (e.g. '11000000101010000000000100001010')

For subnets CIDR notation is also supported:

  • Decimal (e.g. '24')
  • Slashed decimal string (e.g. '/24')

Requirements

  • PHP 7.0+
  • GMP extension

License

Copyright (c) 2013-2016 Oļegs Čapligins and respective contributors under the MIT License.

Usage

Examples below cover general usage. Consider including necessary classes and dependencies. Also a lot of usage examples are available in unit tests.

Address handling

<?php $net = new \dautkom\ipv4\IPv4(); // Format handling $s = $net->address('62.205.205.2')->getFormat(); $s = $net->address('00111110110011011100110100000010')->getFormat(); $s = $net->address('0076.0315.0315.0002')->getFormat(); $s = $net->address('0x3ECDCD02')->getFormat(); $s = $net->address('0x3E.0xCD.0xCD.0x02')->getFormat(); $s = $net->address('1053674754')->getFormat(); $s = $net->address('-12345')->getFormat(); // Or getFormat() can be replaced with isValid() for validation $t = $net->address('62.205.205.2')->isValid(); $t = $net->address('0x3ECDCD02')->isValid(); // Convert address to another format $s = $net->address('192.168.1.10')->convertTo('long'); $s = $net->address('0xC0A8010A')->convertTo('bin'); $s = $net->address('3363174417')->convertTo('dec'); $s = $net->address('-931792879')->convertTo('dec'); $s = $net->address('3232235786')->convertTo('oct'); $s = $net->address('0300.0250.0001.0012')->convertTo('hex', true); $s = $net->address('0300.0250.0001.0012')->convertTo('hex'); 

Subnet handling

There're several ways to work with subnets and subnet masks, combining with address or separately. In examples below return types are shortcoded in variables: $s for string, $a for array, $n for null, $t and $f for boolean true and false respectively.

CIDR notation

<?php $net = new \dautkom\ipv4\IPv4(); // Valid notation $t = $net->subnet('62.205.205.0/24')->isValid(); $t = $net->subnet('10.0.0.1/32')->isValid(); // Invalid examples $f = $net->subnet('62.205.205.1/24')->isValid(); # wrong subnet address $f = $net->subnet('62.205.205.1')->isValid(); # missing cidr mask $f = $net->subnet('0x3ECDCD00/24')->isValid(); # wrong format // Retrieve subnet address $s = $net->subnet('62.205.205.0/24')->getSubnetAddress(); // Retrieve mask in CIDR format without and with slash $s = $net->subnet('62.205.205.0/24')->getMask(); # 24 $s = $net->subnet('62.205.205.0/24')->getMask(true); # /24 // Retrieve subnet range $a = $net->subnet('62.205.205.0/25')->getRange(); // Retrieve subnet broadcast address $s = $net->subnet('62.205.205.0/24')->getBroadcast(); // Count hosts in subnet without broadcast address // 1 host (e.g. for gateway) can be excluding by optional argument $s = $net->subnet('62.205.205.0/24')->countHosts()); # 254 $s = $net->subnet('62.205.205.0/24')->countHosts(true)); # 253 // Check if IP address belongs to given subnet $t = $net->subnet('192.168.0.0/24')->has('192.168.0.2'); # yes $f = $net->subnet('10.1.2.0/25')->has('10.1.2.200'); # no 

Handling subnet mask in multiple formats

<?php $net = new \dautkom\ipv4\IPv4(); // Format handling $s = $net->mask('255.255.0.0')->getFormat(); $s = $net->mask('11111111111111111111111100000000')->getFormat(); $s = $net->mask('0377.0377.0377.0000')->getFormat(); $s = $net->mask('/23')->getFormat(); $s = $net->mask('24')->getFormat(); $s = $net->mask(25)->getFormat(); // Or getFormat() can be replaced with isValid() for validation $t = $net->mask('0xFF000000')->isValid(); // Convert to different notation $s = $net->mask('/24')->convertTo('dec'); $s = $net->mask('24')->convertTo('long'); $s = $net->mask(24)->convertTo('hex'); $s = $net->mask('255.255.255.0')->convertTo('bin'); $s = $net->mask('0xFFFF0000')->convertTo('hex', true); $s = $net->mask('11111111111111111111111100000000')->convertTo('cidr'); // Valid ip-mask combinations $t = $net->address('62.205.205.2')->mask('/24')->isValid(); $t = $net->address('0x3ECDCD00')->mask('255.255.255.0')->isValid(); // Strict check (only valid subnet passes) // Valid $t = $net->address('62.205.205.0')->mask(24)->isValid(true); // Invalid, too wide mask for given subnet address $f = $net->address('62.205.205.128')->mask('/23')->isValid(true); // Valid, it's a single host $t = $net->address('62.205.205.2')->mask('32')->isValid(true); // Invalid, not a valid subnet address $f = $net->address('62.205.205.2')->mask('/30')->isValid(true); // Valid, now it works $t = $net->address('62.205.205.4')->mask('/30')->isValid(true) // Retrieve subnet address from IP address and mask $s = $net->address('62.205.205.2')->mask('255.255.255.0')->getSubnetAddress(); // Retrieve subnet range from given network $a = $net->address('62.205.205.0')->mask('/25')->getRange(); // Count hosts in subnet without broadcast address // 1 host (e.g. for gateway) can be excluding by optional argument $s = $net->address('62.205.205.0')->mask('0xFFFFFF00')->countHosts(); # 254 $s = $net->address('62.205.205.0')->mask('0xFFFFFF00')->countHosts(true); # 253 // Retrieve subnet broadcast address $s = $net->address('62.205.205.2')->mask('0xFFFFFF00')->getBroadcast(); // Check if given arguments represent a valid subnet $t = $net->address('192.168.0.0')->mask('/24')->isSubnet(); $t = $net->address('192.168.0.1')->mask('255.255.255.255')->isSubnet(); $f = $net->address('192.168.0.1')->mask('255.255.255.0')->isSubnet(); $f = $net->address('192.168.250.0')->mask('/20')->isSubnet(); # too wide mask // Check if IP address belongs to given subnet $t = $net->address('192.168.0.0')->mask('24')->has('192.168.0.12'); $f = $net->address('10.1.2.0')->mask('255.255.255.128')->has('192.168.0.255'); 

统计信息

  • 总下载量: 33.97k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固