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&amp;mysql(一)
Oct 09 PHP
延长phpmyadmin登录时间的方法
Feb 06 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 PHP
Yii针对添加行的增删改查操作示例
Oct 18 PHP
PDO::beginTransaction讲解
Jan 27 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
回帖脱衣服的图片实现代码
2014/02/15 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
Python 如何批量更新已安装的库
2020/05/26 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
经典婚礼主持开场白
2014/03/13 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
钱学森观后感
2015/06/04 职场文书
重阳节活动主持词
2015/07/04 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
vue+echarts实现多条折线图
2022/03/21 Vue.js
oracle数据库去除重复数据
2022/05/20 Oracle