欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP全国省市区地址分割提取脚本程序

程序员文章站 2024-04-02 19:31:40
...

github地址:https://github.com/zmxfree/addressapart 比如将 浙江省杭州市江干区XX路X号 分割成 浙江省 杭州市 江干区 XX路X号 ,方便excel操作。 目前支持大部分中国省市区地址信息的分割,可以自行更新地址源信息。 主程序代码: ? php /* *- * 省市区地

github地址: https://github.com/zmxfree/addressapart

比如将 浙江省杭州市江干区XX路X号 分割成 浙江省 杭州市 江干区 XX路X号,方便excel操作。

目前支持大部分中国省市区地址信息的分割,可以自行更新地址源信息。

主程序代码:

php
/**-
 * 省市区地址分割
 * 将 浙江省杭州市江干区XX路X号 分割成 浙江省 杭州市 江干区 XX路X号
 * User: zmxfree@gmail.com
 * Date: 14-6-18
 * Time: 下午12:52
 */

/**此引入文件应包含全国所有的省市区信息
 * 文件格式为多维数组,键是地名,值可以赋一个编号,供回查
 * array(
 * [0] => array('浙江省' => '1','北京市' => '2','上海市' => '3',...),
 * [1] => array('杭州市' => '1-1','宁波市' => '1-2','市辖区(一般的直辖市会分为市辖区和周边地区)' => '2-1,3-1',...),
 * [3] => array('西湖区'  => '1-1-1','江干区' => '1-1-2','海淀区'=>'2-1-1',...),
 * [4] => array('可按需求添加城镇信息')
 * )
 * 这样的结构CRUD操作很方便,不需要严格按照省市区结构分配。
 */
$address = include('address.info.php');
$cache_file = 'lenarr.cache.php';
mb_internal_encoding('utf8');
$len_arr = array();
if (is_file($cache_file) && is_readable($cache_file)) {
    //读取省市区长度缓存
    $len_arr = include($cache_file);
} else {
    $fp = fopen($cache_file, 'w');
    //省市区的数量有很多,但长度却是有限的,直接计算出长度,用长度去匹配,大大减少匹配次数
    $len_arr[] = array_values(array_unique(array_map('mb_strlen', array_keys($address[0])))); //所有省的长度
    $len_arr[] = array_values(array_unique(array_map('mb_strlen', array_keys($address[1])))); //市的长度
    $len_arr[] = array_values(array_unique(array_map('mb_strlen', array_keys($address[2])))); //区的长度
    //保存文件缓存
    $result = fwrite($fp, 'var_export