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 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
PHP $_SERVER详解
Jan 16 PHP
处理php自动反斜杠的函数代码
Jan 05 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
深入浅出php socket编程
May 13 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
Dec 10 PHP
PHP依赖注入原理与用法分析
Aug 21 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 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利用cookie实现访问次数统计代码
2011/05/19 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
PHP多进程简单实例小结
2019/11/09 PHP
syntaxhighlighter 使用方法
2007/07/02 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
js实现扫雷源代码
2020/11/27 Javascript
python中enumerate函数用法实例分析
2015/05/20 Python
OpenCV实现人脸识别
2017/04/07 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
大学旷课检讨书
2014/01/28 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
三行辞职书范文
2015/02/26 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
倡议书怎么写?
2019/04/11 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang