| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
PHP Library for manipulating network addresses (IPv4 and IPv6).
Composer: Run in command line:
composer require detain/iptools
or put in composer.json:
{
"require": {
"detain/iptools": "*"
}
}This library breaks its handling down into IP, Range, and Network types and provdes a matching named class to make working with all things IP much simpler.
$ip = new IP('192.168.1.1');
echo $ip->version;// IPv4$ip = new IP('fc00::');
echo $ip->version; // IPv6Parsing 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.1or:
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.1Converting 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 // 2130706433maxPrefixLength 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.arpaecho 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/32Exclude 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
Exclude Many Subnets from Network:
$excluded = Network::parse('192.0.0.0/8')->excludeArray(['192.168.1.0/24', '192.168.2.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.3.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')) // 254Define 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')); // trueCheck if IP is within any of the Ranges in an array:
echo Range::parse('192.168.1.1-192.168.1.254')->containsAny([new IP('192.168.0.5'), new IP('192.168.1.5')]); // trueCheck if IP is within all of the Ranges in an array:
echo Range::parse('192.168.1.1-192.168.1.254')->containsAll([new IP('192.168.0.5'), new IP('192.168.1.5')]); // false
echo Range::parse('192.168.1.1-192.168.1.254')->containsAll([new IP('192.168.1.6'), new IP('192.168.1.5')]); // trueIterate 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')) // 254The library is released under the MIT.
| Back | FazBrowse Home | New Git URL |