0

0

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

php中文网

php中文网

发布时间:2016-06-06 19:44:14

|

4102人浏览过

|

来源于php中文网

原创

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

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

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

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

主程序代码:

海螺语音
海螺语音

海螺AI推出的AI语音生成工具,支持多种语种、情绪和效果。

下载

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($len_arr, true) . ';?>');
    fclose($fp);
}

//读取要分割的地址
$f = './address.log';
$fstr = is_file($f) && is_readable($f) ? file_get_contents($f) : '';
$add_arr = explode("\n", $fstr);

if (is_array($add_arr)) {
    foreach ($add_arr as $addr) {
        //初始化
        $l = 0;
        $i = 0;
        $p = 0;
        $find = false;
        $arr_get = array();
        $addr = trim($addr);

        while (!$find) {
            //判断是否超出lenarr数组的长度
            if (!isset($len_arr[$l])) {
                $arr_get[] = mb_substr($addr, $p, null);
                $find = true;
                break;
            }

            //截取地址
            $ad = mb_substr($addr, $p, $len_arr[$l][$i]);
            //匹配,匹配到就进入下一层级即$l++
            if (isset($address[$l][$ad])) {
                $arr_get[] = $ad; //存储值
                $p += $len_arr[$l][$i];
                $i = 0;
                $l++;
                continue;
            }
            $i++;

            //判断当前层级是否循环完毕
            //当前层级循环完毕仍未匹配到,则循环下一层级,一般是直辖市比如北京市海淀区这种情况,或者是信息不全
            if (isset($len_arr[$l]) && $i >= count($len_arr[$l])) {
                echo $ad . '
'; //记录下来 $i = 0; $l++; continue; } } //分割好的地址写入文件 file_put_contents('address.detail', implode("\t", $arr_get) . "\n", FILE_APPEND); } }

 

立即学习PHP免费学习笔记(深入)”;

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 7.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号