比如输入的IP是121.204.208.70预设的IP范围存在一个文件里
121.192.0.0 121.199.255.255
121.201.0.0 121.201.255.255
121.204.0.0 121.207.255.255
121.224.0.0 121.239.255.255
121.248.0.0 121.251.255.255我用fgets一次读出一行,现在怎么判断是否在范围内呢。
121.248.0.0 121.251.255.255中间是一个空格。
如上面的例子,当读到第三行的时候,应该判断出是范围内
121.192.0.0 121.199.255.255
121.201.0.0 121.201.255.255
121.204.0.0 121.207.255.255
121.224.0.0 121.239.255.255
121.248.0.0 121.251.255.255我用fgets一次读出一行,现在怎么判断是否在范围内呢。
121.248.0.0 121.251.255.255中间是一个空格。
如上面的例子,当读到第三行的时候,应该判断出是范围内
解决方案 »
- 请问正则如何验证32位md5字符串
- PHP post 数据有误的问题
- 数组排序
- 求php最新的手册下载地址!!!!!
- 为什么设置了server的值mysql_connect还是连接到localhost?
- 请问我这样写对不对,谢谢??
- 请问在win2k中如何设置mysql的系统DNS。
- 请问像vbb这样的论坛是用什么方式保存当前会话信息
- apache1.3.27+php4.0.2+informix7.0怎么不行啊???
- php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助!
- 判断日期和时间
- PHPChina【长沙】培训中心LAMP全能班开班啦!(可免费试听一周,团体报名人均最低优惠400元!)
//$ip:输入的IP
//$ip_section:读取的IP段
function parseIP($ip,$ip_section){
$ip_arr = split($ip,"\.");
$ip_part = split($ip_section," ");
$ipstart = split($ip_part[0],"\.");
$ipend = split($ip_part[1],"\.");
for($i=0;$i<4;$i++){
if($ip_arr[$i]<$ipstart[$i]||$ip_arr[$i]>$ipend[$i])
return false;
}
return true;
}
这个虽然笨,还是可以的
事实上
121.204.208.70 也在
121.192.0.0 121.199.255.255 范围内3楼的split的两个参数ms写反了。另外3楼的其实也是上边我说的这个问题。
print parseIP('111.111.111.111', '11.11.11.11 120.120.120.120');会返回真。如果这正是楼主所要的话 我觉得还不如用ip2longif(ip2long($ip) >= ip2long($start) && ip2long($ip) <= ip2long($end)) {如果楼主想限定ip的前两位相同,则需要explode 比较前两位相同,后两位> 和<限定的ip即可