Ip转换为数字,正则匹配ip
来源:互联网 发布:康生书法 知乎 编辑:程序博客网 时间:2024/06/05 02:26
存储空间比较:
varchar 类型 存储 0.0.0.0 -255.255.255.255 是7-15个字节int 类型 存储 是4个字节 1个字节8位 2^31-1 IPv4 实质就是 32位的二进制串 可以用int 存储
ipv4地址(10进制的4段)转换为32位的2进制。
1. 先转换为2进制,然后连在一起 2. 左移 3*8 2*8 1*8 0 位
转换:
function ipton($ip){ $ip_arr=explode('.',$ip);//分隔ip段 foreach ($ip_arr as $value) { $iphex=dechex($value);//将每段ip转换成16进制 if(strlen($iphex)<2)//255的16进制表示是ff,所以每段ip的16进制长度不会超过2 { $iphex='0'.$iphex;//如果转换后的16进制数长度小于2,在其前面加一个0 //没有长度为2,且第一位是0的16进制表示,这是为了在将数字转换成ip时,好处理 } $ipstr.=$iphex;//将四段IP的16进制数连接起来,得到一个16进制字符串,长度为8 } return hexdec($ipstr);//将16进制字符串转换成10进制,得到ip的数字表示}//将数字转换为IP,进行上面函数的逆向过程function ntoip($n){ $iphex=dechex($n);//将10进制数字转换成16进制 $len=strlen($iphex);//得到16进制字符串的长度 if(strlen($iphex)<8) { $iphex='0'.$iphex;//如果长度小于8,在最前面加0 $len=strlen($iphex); //重新得到16进制字符串的长度 } //这是因为ipton函数得到的16进制字符串,如果第一位为0,在转换成数字后,是不会显示的 //所以,如果长度小于8,肯定要把第一位的0加上去 //为什么一定是第一位的0呢,因为在ipton函数中,后面各段加的'0'都在中间,转换成数字后,不会消失 for($i=0,$j=0;$j<$len;$i=$i+1,$j=$j+2) {//循环截取16进制字符串,每次截取2个长度 $ippart=substr($iphex,$j,2);//得到每段IP所对应的16进制数 $fipart=substr($ippart,0,1);//截取16进制数的第一位 if($fipart=='0') {//如果第一位为0,说明原数只有1位 $ippart=substr($ippart,1,1);//将0截取掉 } $ip[]=hexdec($ippart);//将每段16进制数转换成对应的10进制数,即IP各段的值 } $ip = array_reverse($ip); return implode('.', $ip);//连接各段,返回原IP值}
转换原理:
1. 字符串转int dechex 分段之后 每段 max 最大换算成16进制 是 ff 所以不会超过2 做长度判断 如果小于2补0,拼起来 得到长度为8的16进制数, hexdec 将16转换为10进制 2. int转字符串 逆过程
正则匹配:
functionis_ip($gonten){ $gonten = '255.190.3.21';$ip=explode('.',$gonten);for($i=0;$i<count($ip);$i++){ if($ip[$i]>255){ return(0); }}preg_match("/^(((1?\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((1?\d{1,2})|(2[0-4]\d)|(25[0-5]))$/",$gonten) ;var_dump($gonten);
阅读全文
0 0
- Ip转换为数字,正则匹配ip
- 将IP转换为数字
- ip地址 转换为数字的公式
- awk 函数 实现数字转换为ip
- IP转换为唯一数字的用法
- 怎样将IP地址转换为数字
- 怎样将IP地址转换为数字
- python匹配ip正则
- 正则匹配ip
- IP正则匹配
- 正则匹配ip ip正则表达式
- ip转换为纯数字(直接用数字访问网站)
- 匹配ip段、ip转换为long型、屏蔽ip段(InetAddress类)
- IP到数字转换
- Perl 匹配IP或者数字
- ip转换为纯数字(如何用数字表示ip?)
- java匹配IP正则表达式
- 正则表达式匹配ip地址
- SQL 在存储过程中使用游标
- webpack 多入口文件打包
- gradle打jar包,并运行包中有main方法的类
- Java微服务开发指南 -- 使用Spring Boot构建微服务
- Top 10 questions of Java Strings
- Ip转换为数字,正则匹配ip
- HotSpot JVM收集器
- 微信jssdk 签名错误排查方法
- casServerMd5加密(前台/后台)
- 二分模板
- Java StringBuffer & StringBuilder 源码分析
- 商品购买
- 有道云笔记中用图框和线条表达逻辑
- 大数据分析JavaOne2017