Skip to content
This repository was archived by the owner on Mar 26, 2022. It is now read-only.
/ php-ipv4 Public archive
forked from tapmodo/php-ipv4

Small set of classes for identifying and enumerating IPv4 addresses and subnets in PHP

License

Notifications You must be signed in to change notification settings

colinodell/php-ipv4

 
 

Repository files navigation

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)

About

Small set of classes for identifying and enumerating IPv4 addresses and subnets in PHP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%