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 相关文章推荐
isset和empty的区别
Jan 15 PHP
解析PHP正则提取或替换img标记属性
Jun 26 PHP
PHP URL路由类实例
Nov 12 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 PHP
phpStudy vscode 搭建debug调试的教程详解
Jul 28 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
PHP获取MAC地址的具体实例
2013/12/13 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
Django实现分页显示效果
2019/10/31 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
公司清洁工岗位职责
2013/12/14 职场文书
青安岗事迹材料
2014/05/14 职场文书
党校党性分析材料
2014/12/19 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
教师岗位说明书
2015/09/30 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
SpringBoot快速入门详解
2021/07/21 Java/Android