高手们照旧忽略。
想弄个全天朝IP段数据库,找了个今天最新更新的国内所有运营商IP段,copy到文件,用文件函数,字符串函数把玩下。分割出startIp和endIp这样格式写入.txt文件,直接用phpmyadmin导入.csv文件的形式导入。(生命在于折腾,也许你们觉得我傻X,直接下载人家弄好的导入不就可以,做自己的菜鸟,让别人去说吧)
当然用到了ip2long()函数把字符串转为整型数据,但这函数会有出现负值的情况
sprintf("%u",ip2long($ip);
这样就能解决了负值问题,而且用long2ip也能还原成IP地址。
偷懒,没去研究怎么实现。那就记录下实现的代码吧。
function ip2int($ip){
//我们先把ip分为四段,$ip1,$ip2,$ip3,$ip4
list($ip1,$ip2,$ip3,$ip4)=explode(".",$ip);
//然后第一段乘以256的三次方,第二段乘以256的平方,第三段乘以256
//这即是我们得到的值
return $ip1*pow(256,3)+$ip2*pow(256,2)+$ip3*256+$ip4;
}
第二种是位运算
function ip2int($ip){
list($ip1,$ip2,$ip3,$ip4)=explode(".",$ip);
return ($ip1<<24)|($ip2<<16)|($ip3<<8)|($ip4);
}