artemeon/iptools 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

artemeon/iptools

最新稳定版本:v3.0.0

Composer 安装命令:

composer require artemeon/iptools

包简介

PHP Library for manipulating network addresses (IPv4 and IPv6)

README 文档

README

PHP Library for manipulating network addresses (IPv4 and IPv6).

Installation

Composer: Run in command line:

composer require s1lentium/iptools 

or put in composer.json:

{ "require": { "s1lentium/iptools": "*" } }

Usage

IP Operations

$ip = new IP('192.168.1.1'); echo $ip->version;// IPv4
$ip = new IP('fc00::'); echo $ip->version; // IPv6

Parsing IP from integer, binary and hex:

echo (string)IP::parse(2130706433); // 127.0.0.1 echo (string)IP::parse('0b11000000101010000000000100000001') // 192.168.1.1 echo (string)IP::parse('0x0a000001'); // 10.0.0.1

or:

echo (string)IP::parseLong(2130706433); // 127.0.0.1 echo (string)IP::parseBin('11000000101010000000000100000001'); // 192.168.1.1 echo (string)IP::parseHex('0a000001'); // 10.0.0.1

Converting IP to other formats:

echo IP::parse('192.168.1.1')->bin // 11000000101010000000000100000001 echo IP::parse('10.0.0.1')->hex // 0a000001 echo IP::parse('127.0.0.1')->long // 2130706433

Other public properties:

maxPrefixLength The max number of bits in the address representation: 32 for IPv4, 128 for IPv6.

octetsCount The count of octets in IP address: 4 for IPv4, 16 for IPv6

reversePointer The name of the reverse DNS PTR for the address:

echo new IP::parse('192.0.2.5')->reversePointer // 5.2.0.192.in-addr.arpa echo new IP::parse('2001:db8::567:89ab')->reversePointer // b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa

Network Operations

echo Network::parse('192.0.0.1 255.0.0.0')->CIDR; // 192.0.0.0/8 echo (string)Network::parse('192.0.0.1/8')->netmask; // 255.0.0.0 echo (string)Network::parse('192.0.0.1'); // 192.0.0.1/32

Exclude IP from Network:

$excluded = Network::parse('192.0.0.0/8')->exclude(new IP('192.168.1.1')); foreach($excluded as $network) { echo (string)$network . '<br>'; }
192.0.0.0/9 192.128.0.0/11 192.160.0.0/13 192.168.0.0/24 192.168.1.0/32 192.168.1.2/31 ... 192.192.0.0/10 

Exclude Subnet from Network:

$excluded = Network::parse('192.0.0.0/8')->exclude(new Network('192.168.1.0/24')); foreach($excluded as $network) { echo (string)$network . '<br>'; }
192.0.0.0/9 192.128.0.0/11 192.160.0.0/13 192.168.0.0/24 192.168.2.0/23 ... 192.192.0.0/10 

Split network into equal subnets

$networks = Network::parse('192.168.0.0/22')->moveTo('24'); foreach ($networks as $network) { echo (string)$network . '<br>'; }
192.168.0.0/24 192.168.1.0/24 192.168.2.0/24 192.168.3.0/24 

Iterate over Network IP adresses:

$network = Network::parse('192.168.1.0/24'); foreach($network as $ip) { echo (string)$ip . '<br>'; }
192.168.1.0 ... 192.168.1.255 

Get Network hosts adresses as Range:

$hosts = Network::parse('192.168.1.0/24')->hosts // Range(192.168.1.1, 192.168.1.254); foreach($hosts as $ip) { echo (string)$ip . '<br>'; }
192.168.1.1 ... 192.168.1.254 

Count Network IP adresses

echo count(Network::parse('192.168.1.0/24')) // 254

Range Operations

Define the range in different formats:

$range = new Range(new IP('192.168.1.0'), new IP('192.168.1.255')); $range = Range::parse('192.168.1.0-192.168.1.255'); $range = Range::parse('192.168.1.*'); $range = Range::parse('192.168.1.0/24');

Check if IP is within Range:

echo Range::parse('192.168.1.1-192.168.1.254')->contains(new IP('192.168.1.5')); // true echo Range::parse('::1-::ffff')->contains(new IP('::1234')); // true

Iterate over Range IP adresses:

$range = Range::parse('192.168.1.1-192.168.1.254'); foreach($range as $ip) { echo (string)$ip . '<br>'; }
192.168.1.1 ... 192.168.1.254 

Get Networks that fit into a specified range of IP Adresses:

$networks = Range::parse('192.168.1.1-192.168.1.254')->getNetworks(); foreach($networks as $network) { echo (string)$network . '<br>'; }
192.168.1.1/32 192.168.1.2/31 192.168.1.4/30 192.168.1.8/29 192.168.1.16/28 192.168.1.32/27 192.168.1.64/26 192.168.1.128/26 192.168.1.192/27 192.168.1.224/28 192.168.1.240/29 192.168.1.248/30 192.168.1.252/31 192.168.1.254/32 

Count IP adresses in Range

echo count(Range::parse('192.168.1.1-192.168.1.254')) // 254

License

The library is released under the MIT.

统计信息

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

GitHub 信息

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

其他信息

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

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固