background image

PHP 获取指定的 IP 网段信息

本文分享一例

php 代码,用于获取指定的 IP 网段的信息,包括 IP 地址与进制间的转换操作。

本节内容:
PHP 获取给定 IP 网段信息,根据给定的 IP 字串获取 IP 信息,验证 IP 字串格式有效性,获
取二进制,

IP 地址转二进制,二进制转 IP 地址,获取子网掩码。

例子:
代码示例

:

<?php
/**
* PHP 获取给定 IP 网段信息
* by www.jbxue.com
*/
    class ipInfo{
       
//根据给定的 IP 字串获取 IP 信息
        public function getIpInfo($ipStr){
            if(!$this->valid($ipStr)){
                return false;
            }
            $ipArr = explode()('/', $ipStr);
           
//information
            $info['ipStr'] = $ipStr;
            $info['bin']['mask'] = $this->getSubnetMask($ipArr[1]);
            $info['ip']['mask'] = $this->bin2ip($info['bin']['mask']);
            $info['long']['mask'] = ip2long($info['ip']['mask']);
            $info['bin']['net'] = $this->ip2bin($ipArr[0]) & $info['bin']['mask'];
            $info['ip']['net'] = $this->bin2ip($info['bin']['net']);
            $info['long']['net'] = ip2long($info['ip']['net']);
            $info['ip']['begin'] = long2ip($info['long']['net']+1);
            $info['bin']['begin'] = $this->ip2bin($ipArr[0]);
            $info['long']['begin'] = ip2long($info['ip']['begin']);
            $info['ip']['end'] = long2ip(abs($info['long']['mask'])+$info['long']['begin']-3);
            $info['bin']['end'] = $this->ip2bin($info['ip']['end']);
            $info['long']['end'] = ip2long($info['ip']['end']);
            $info['ip']['broacast'] = long2ip($info['long']['end']+1);
            $info['bin']['broacast'] = $this->ip2bin($info['ip']['broacast']);
            $info['long']['broacast'] = ip2long($info['ip']['broacast']);
            return $info;
        }
       
//验证 IP 字串格式有效性 10.0.0.1/24