php进行ip地址掩码运算处理的方法


Posted in PHP onJuly 11, 2016

本文实例讲述了php进行ip地址掩码运算处理的方法。分享给大家供大家参考,具体如下:

ip解析:

function ip_parse($ip_str) {
 $mark_len = 32;
 if (strpos($ip_str, "/") > 0) {
  list($ip_str, $mark_len) = explode("/", $ip_str);
 }
 $ip = ip2long($ip_str);
 $mark = 0xFFFFFFFF << (32 - $mark_len) & 0xFFFFFFFF;
 $ip_start = $ip & $mark;
 $ip_end = $ip | (~$mark) & 0xFFFFFFFF;
 return array($ip, $mark, $ip_start, $ip_end);
}
//演示:
list($ip, $mark, $ip_start, $ip_end) = ip_parse("192.168.1.12/24");
echo "IP地址 : ", long2ip($ip), "\n";
echo "子网掩码: ", long2ip($mark), "\n";
echo "IP段开始: ", long2ip($ip_start), "\n";
echo "IP段结束: ", long2ip($ip_end), "\n";

结果:

IP地址 : 192.168.1.12
子网掩码: 255.255.255.0
IP段开始: 192.168.1.0
IP段结束: 192.168.1.255

ip是否在ip分段中:

function ip_in($ip, $ip_str) {
 $mark_len = 32;
 if (strpos($ip_str, "/") > 0) {
  list($ip_str, $mark_len) = explode("/", $ip_str);
 }
 $right_len = 32 - $mark_len;
 return ip2long($ip) >> $right_len == ip2long($ip_str) >> $right_len;
}
//演示:
var_dump(ip_in("192.168.1.1", "192.168.1.0/24"));
PHP 相关文章推荐
如何实现给定日期的若干天以后的日期
Oct 09 PHP
php和js交互一例-PHP教程,PHP应用
Jan 03 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
php过滤html标记属性类用法实例
Sep 23 PHP
php写入数据到CSV文件的方法
Mar 14 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 #PHP
php进程间通讯实例分析
Jul 11 #PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 #PHP
php通过两层过滤获取留言内容的方法
Jul 11 #PHP
php基于openssl的rsa加密解密示例
Jul 11 #PHP
PHP微信开发用Cache 解决数据缓存
Jul 11 #PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 #PHP
You might like
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
python中__slots__用法实例
2015/06/04 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
群胜软件Java笔试题
2012/09/29 面试题
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
气象学专业个人求职信
2014/04/22 职场文书
软件项目实施计划书
2014/05/02 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
话题作文之生命的旋律
2019/12/17 职场文书