php获取省市区区划代码,使用PHP解析行政区划代码

话说这个PHP脚本我已经写过好多次了,不过由于国家统计局提供的数据格式有些许的变化,所以我又重写了一遍,问题既涉及到PHP,同时也涉及到MySQL,感觉很适合做面试题,这类问题往往最能反映出求职者的基本素质。

准备工作:需要下载最新县及县以上行政区划代码,并保存成data.txt文件。

ac397e2cbd6cae3ad3a8017f30d66874.png

最新县及县以上行政区划代码

首先创建MySQL表:

需要注意的是表的字符集和文件的字符集需要一致。

CREATE TABLE IF NOT EXISTS `region` ( `id` int(10) unsigned NOT NULL, `parent_id` int(10) unsigned NOT NULL, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`), KEY `parent_id` (`parent_id`)) ENGINE=InnoDB;

然后编写PHP脚本:

需要注意的是自己保证data.txt文件内容的合法性,代码本身未做严禁的校验。

<?php // config$host = '';$dbname = '';$charset = '';$username = '';$password = '';set_time_limit(0);$dsn = "mysql:host={$host};dbname={$dbname};charset={$charset}";$options = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,);$dbh = new PDO($dsn, $username, $password, $options);$sth = $dbh->prepare(' INSERT INTO region (id, parent_id, name) VALUES (:id, :parent_id, :name)');$parent = array();$handle = fopen('data.txt', 'r');while (!feof($handle)) { $row = trim(fgets($handle)); if (!preg_match('/^(\d+)(\s+)(.+)$/', $row, $matches)) { continue; } list($row, $id, $delimiter, $name) = $matches; if (!isset($separator)) { $separator = $delimiter; } $level = substr_count($delimiter, $separator); $parent_id = $level > 1 ? $parent[$level - 1] : 0; $parent[$level] = $id; $sth->bindValue(':id', $id, PDO::PARAM_INT); $sth->bindValue(':parent_id', $parent_id, PDO::PARAM_INT); $sth->bindValue(':name', $name); $sth->execute();}fclose($handle);?>

说明:根据自己的情况填写好config就OK了。

……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值