Small set of classes for identifying and enumerating IPv4 addresses and subnets in PHP
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 26 commits ahead of tapmodo:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitattributes
.gitignore
.scrutinizer.yml
.styleci.yml
.travis.yml Add support for PHP 7.2 and 7.3 Dec 8, 2018
CHANGELOG.md
LICENSE
README.md
composer.json
phpunit.xml.dist Refactor things; add tests Jul 13, 2017

README.md

IPv4 classes for PHP

Latest Version Total Downloads Software License Build Status Coverage Status Quality Score

Purpose

Identify, convert, and enumerate IPv4 IP addresses and subnets

Installation

Install with Composer: composer require colinodell/ipv4

Examples

<?php

use ColinODell\Ipv4\Address;
use ColinODell\Ipv4\Subnet;

$ip = Address::fromString('10.2.1.1');
$sn = Subnet::fromString('10.2.0.0/16');

// Subnets can also be created like this:
$sn = new Subnet('192.168.1.0/24');
$sn = new Subnet('192.168.1.0', '255.255.255.0');
$sn = new Subnet(Address::fromString('192.168.1.0'), Address::fromString('255.255.255.0'));
$sn = new Subnet('192.168.1.0 255.255.255.0');
$sn = Subnet::fromString('192.168.1.0/24');
$sn = Subnet::fromString('192.168.1.0 255.255.255.0');

// Test if IP is in subnet
$sn->contains($ip)          // true
$sn->contains('10.3.1.23')  // false
Subnet::containsAddress($sn,$ip)
Subnet::containsAddress('192.168.1.0/27','192.168.1.246')

// Test if two IPs are on the same network
$netmask = '255.255.255.0';
Subnet::containsAddress(new Subnet($ip1,$netmask),$ip2)

// Can be written in numerous ways...
Subnet::containsAddress("{$ip1}/24",$ip2)
Subnet::fromString("{$ip1}/24")->contains($ip2)

// Subnet information
$sn->getNetwork()
$sn->getNetmask()
$sn->getNetmaskCidr()
$sn->getFirstHostAddr()
$sn->getLastHostAddr()
$sn->getBroadcastAddr()

// Enumerate subnet addresses
foreach($sn as $addr) ...

// Count number of usable IPs on subnet (implements Countable)
$sn->getTotalHosts()
$sn->count()
count($sn)