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 相关文章推荐
开发大型PHP项目的方法
Oct 09 PHP
动易数据转成dedecms的php程序
Apr 07 PHP
非常不错的MySQL优化的8条经验
Mar 24 PHP
php strnatcmp()函数的用法总结
Nov 27 PHP
php数组键名技巧小结
Feb 17 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
PHP MSSQL 分页实例
Apr 13 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
laravel5表单唯一验证的实例代码
Sep 30 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 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的中问验证码
2006/11/25 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
python中列表和元组的区别
2017/12/18 Python
python绘制中国大陆人口热力图
2018/11/07 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
什么是组件架构
2016/05/15 面试题
企业员工薪酬方案
2014/06/04 职场文书
常务副总经理任命书
2014/06/05 职场文书
大学同学会活动方案
2014/08/20 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
变长双向rnn的正确使用姿势教学
2021/05/31 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js