使用PHP解析行政區劃代碼_PHP教程

來源:互聯網
上載者:User
話說這個PHP指令碼我已經寫過好多次了,不過由於國家統計局提供的資料格式有些許的變化,所以我又重寫了一遍,問題既涉及到PHP,同時也涉及到MySQL,感覺很適合做面試題,這類問題往往最能反映出求職者的基本素質。

準備工作:需要下載最新縣及縣以上行政區劃代碼,並儲存成data.txt檔案。


最新縣及縣以上行政區劃代碼

首先建立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;
補充:更好的儲存層次化的資料:Storing Hierarchical Data in a Database Article。

然後編寫PHP指令碼:
需要注意的是自己保證data.txt檔案內容的合法性,代碼本身未做嚴禁的校正。

// 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);

$handle = fopen('data.txt', 'r');

$parent = array();

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 = $dbh->prepare('
INSERT INTO region (id, parent_id, name)
VALUES (:id, :parent_id, :name)
');

$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->bindValue(':parent_id', $parent_id, PDO::PARAM_INT);
$sth->bindValue(':name', $name);

$sth->execute();
}

fclose($handle);

?>
說明:根據自己的情況填寫好配置選項就可以運行了。

……

有了官方的行政區劃代碼,再配上民間的純真IP資料庫,就更完美了。

作者:老王

http://www.bkjia.com/PHPjc/478052.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478052.htmlTechArticle話說這個PHP指令碼我已經寫過好多次了,不過由於國家統計局提供的資料格式有些許的變化,所以我又重寫了一遍,問題既涉及到PHP,同時也...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.