php怎么匹配ip地址段的实例代码

php怎么匹配ip地址段,具体实例代码如下,有需要的朋友可以试下: ?php$ips = array('192.168.1.1-192.168.1.254','192.168.0.1-192.168.0.254','192.168.3.1-192.168.3.254','192.168.4.1-192.168.4.254');foreach ($ips as $ip) {list($start, $end) = expl
php怎么匹配ip地址段,具体实例代码如下,有需要的朋友可以试下:
<?php
$ips = array('192.168.1.1-192.168.1.254','192.168.0.1-192.168.0.254','192.168.3.1-192.168.3.254','192.168.4.1-192.168.4.254');

foreach ($ips as $ip) {

list($start, $end) = explode('-', $ip);

//去除32位下负数

$start = sprintf("%u", ip2long($start));

$end = sprintf("%u",ip2long($end));

$newips[] = array($start, $end);

}

function my_sort($a, $b) {

if ($a[0] == $b[0])

return 0;

return ($a[0] < $b[0]) ? -1 : 1;

}

//从大到小排序,IP段较多时可以使用2分查找或多分。

usort($newips, 'my_sort');

$matchip = '192.168.1.22';

$matchip = sprintf("%u",ip2long($matchip));

foreach ($newips as $value) {

if ($matchip > $value[0] && $matchip < $value[1])

echo "匹配IP段:". long2ip($value[0]) . '-' . long2ip($value[1]) . "\n";

}

 CIDR方式匹配,具体代码如下:
<?php

function cidr_match($ip, $range)
{
list ($subnet, $bits) = explode('/', $range);
$ip = ip2long($ip);
$subnet = ip2long($subnet);
$mask = -1 << (32 - $bits);
$subnet &= $mask;
return ($ip & $mask) == $subnet;
}
var_dump(cidr_match('192.168.1.22', '192.168.1.0/24'));
CIDR获取IP段起始IP地址:
<?php
function cidrToRange($cidr) {
$range = array();
$cidr = explode('/', $cidr);
$range[0] = long2ip((ip2long($cidr[0])) & ((-1 << (32 - (int)$cidr[1]))));
$range[1] = long2ip((ip2long($cidr[0])) + pow(2, (32 - (int)$cidr[1])) - 1);
return $range;
}
var_dump(cidrToRange("192.168.1.1/24"));
 
本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

我们要判断IP地址是否相匹配或者是否在一个IP段里,怎么用php实现呢?下面为实例代码: ?php$ip1="192.168.10.1";$ip2="192.168.10.1";$ips="192.168.10.*";if(strcmp($ip1,$ip2)==0){echo"相等";}else{echo"不相等";}$ip1_segment=substr($ip1,0,strrpos($ip
我们需要做采集,首先要了解正则表达式,在这里我们用到的是-phpQuery。phpQuery用来匹配html中的内容比正则简单太多了,只要会jquery,使用起来几乎无障碍。这里只是提供一个demo实例,可能随着原网址内容的调整无法采集到内容,具体大家可以尝试下。 ?phpre
php 解决json gbk编码中文null问题的实例代码,具体代码如下,希望可以帮到需要的朋友: /** * gbk编码转utf-8 * @param unknown $data * @return multitype: */function gbk2utf8($data){ if(is_array($data)){ return array_map('gbk2utf8', $data); } retu
php中求三个数中最大值的实例代码如下,希望能够帮到需要的朋友 ?php//求三个数中的最大值function maxNum($x,$y,$z){ return $x$y ? ( $x$z ? $x : $z ) : ($y$z ?$y :$z);}echo maxNum(35,26,118);? 也可以通过下面最笨的方法: ?php//求三个数中的最大值 最
关键词匹配是比较常见的需求,如留言、弹幕及游戏聊天中的敏感词过滤,都需要对一段文字进行关键词匹配。提取到关键词后,再做进一步处理。 本类借助PHP高效的数组和mbstring扩展,来实现对中文关键词的匹配。主要思想是以关键词为key,构建字典数组,这样便
本文实例讲述了php中最简单的字符串匹配算法。分享给大家供大家参考。具体实现方法如下: ?php/*最简单字符串匹配算法php实现方式 T: ababcabcP: abc 0. 1. 2.ababcabc ababcabc ababcabc||| ||| |||abc abc abc(X) (X) (O) 3. 4. 5.ababcabc ababcabc ababca