注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

(PHP)IP定位城市、纯真IP库、纯真IP库导入mysql、IP(查询)地址  

2015-06-24 17:30:58|  分类: Web技术-Php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
前往cz88.net下载最新的IP库后,使用以下核心代码:

//相关参数设定
set_time_limit(0);
$st = currentT();
//纯真IP库
$path = '/upload/ip.txt';
//生成SQL文件
$sqlpath = '/upload/ipsql.sql';

//直辖市
$redcitys = array(
'北京市',
'上海市',
'天津市',
'重庆市'
);

//自治区
$selfpro=array(
'内蒙古',
'新疆',
'宁夏',
'广西',
'西藏'
);

//特别行政区
$speclcitys = array(
'香港',
'澳门'
);

//读取文件,处理并形式成sql
file_put_contents($sqlpath,'');
$sqlstr = '"%s","%s","%s","%s","%s","%s","%s","%s"'."\n";

$fp = fopen($path, 'r');
while(($line=fgets($fp)) !==False)
{
$line = trim($line);
$line = mb_convert_encoding($line, 'UTF-8','GBK');
$line = preg_split('/\s+/',$line);

$city=$pro='';
$country = '中国';

$isredcitys = $ispro = $isselfpro=$isspeclcitys=False;
foreach ($redcitys as $c)
{
//直辖市
if(strpos($line[2], $c) ===0)
{
$city = str_replace('市','',$c);
$isredcitys = True;
break;
}
}

if(!$isredcitys and strpos($line[2], '省') !== False)
{
//省
$array = explode('省', $line[2]);
$pro = reset($array);
$city = end($array);

$city = explode('市', $city);
$city = reset($city);
$city = explode('地区', $city);
$city = reset($city);
$ispro = True;
}

if(!$ispro)
{
//自治
foreach ($selfpro as $c)
{
if(strpos($line[2], $c) !== False)
{
$city = str_replace($c,'',$line[2]);
$city = explode('市', $city);
$city = reset($city);
$city = explode('地区', $city);
$city = reset($city);
$pro = $c;
$isselfpro = True;
break;
}
}
}

if(!$isselfpro)
{
//特别
foreach ($speclcitys as $c)
{
if(strpos($line[2], $c) !== False)
{
$c = str_replace(array('市','地区'),array('',''),$c);
$city = $c;
$isspeclcitys = True;
break;
}
}

}

//不是中国
if($isredcitys==False and $ispro==False and $isselfpro==False and $isspeclcitys==False)
{
$country = $line[2];
}
$company =$line[3];

//组装数据
$sql = sprintf($sqlstr,$line[0],$line[1],ip2int($line[0]),ip2int($line[1]),$city,$pro,$country,$company);
file_put_contents($sqlpath, $sql,FILE_APPEND);
}
fclose($fp);


//导入数据
$sqlpath = str_replace("\\","/", $sqlpath);
$sql = "LOAD DATA LOCAL INFILE '$sqlpath' INTO TABLE `ips` FIELDS TERMINATED BY ',' ENCLOSED BY '".'"'."' ESCAPED BY '\\\' LINES TERMINATED BY '\n' (ipa,ipb,ipis,ipie,city_name,pro_name,country_name,company_name)";

$hostPort ='xx';
$db = new mysqli($host,$dbuser,$dbpasswd,$dbname,$hostPort);
$db->query($sql);
//var_dump($db->error);
//var_dump($db->errno);
$db->close();

$et = currentT();

echo $et- $st;
exit;

(PHP)IP定位城市、纯真IP库、纯真IP库导入mysql、IP(查询)地址
(fc_lamp)
方法

function ip2int($ip)
{
/*自解方式
list($ip1,$ip2,$ip3,$ip4)=explode(".",$ip);
return $ip1*pow(256,3)+$ip2*pow(256,2)+$ip3*256+$ip4;
*/

//原生方式
return sprintf("%u", ip2long($ip));
}


function currentT()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}


查询相关:

$ip=ip2int($myip); //转换ip 

$sql="select * from ips where ipis<=$ip order by ipis desc limit 1";


注意:插入时如果你选择的INT,要注意长度问题,

1.整型(xxxint)

MySQL数据类型含义
tinyint(m)1个字节表示(-128~127)
smallint(m)2个字节表示(-32768~32767)
mediumint(m)3个字节表示(-8388608~8388607)
int(m)4个字节表示(-2147483648~2147483647)
bigint(m)8个字节表示(+-9.22*10的18次方)

导入成功截图:
(PHP)IP定位城市、纯真IP库、纯真IP库导入mysql - fc_lamp - @fc_lamp
 


参考:
http://www.lao8.org/article_1526/php_jiami
http://www.helloweba.com/view-blog-190.html
http://www.lao8.org/article_1275/chunzhen_mysql
http://www.cz88.net/
  评论这张
 
阅读(403)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017