之前做项目的时候,经常遇到这种情况:用户填的收货地址是一整段话,像这样:
张三 13512345678 重庆市攀枝花市东区机场路88号 410123199001011234 邮编100000
人眼一看还行,但要让程序去拆成「姓名」「手机号」「省市区」「详细地址」这些字段,还是挺折磨的。
所以我就自己写了一个小工具,现在开源出来了,分享给大家用。支持直接在网页上粘贴地址自动解析,也可以安装进 PHP 项目里用。
如果你只是想把一批收货地址快速拆成结构化格式,比如帮客服导入表格、整理用户地址,那你直接用这个就行:
在线体验地址:点击立即使用
打开后,把地址粘进去,它会自动给你拆出来:
字段 | 示例值 |
---|---|
姓名 | 张三 |
手机号 | 13512345678 |
身份证号 | 410123199001011234 |
省市区 | 四川省 攀枝花市 东区 |
详细地址 | 机场路88号 |
邮编 | 100000 |
操作很简单,不用注册、不用装软件,直接用。
也没啥“市场需求分析”那种大词,其实就是我自己做系统的时候经常遇到类似的问题。
尤其是后台管理系统,导入收货地址的时候,用户填的内容各种格式都有:
自己去写正则一个个拆,太麻烦,而且还不稳定。所以我就打算干脆写个通用一点的解析器,干干净净地输出结构化结果,自己用起来省事,也能给有类似需求的朋友用。
一句话总结:把一段收货地址文本,拆成结构化的字段。
比如:
use Hejunjie\AddressParser\AddressParser;
$raw = '张三,13512345678,410123199001011234 重庆攀枝花市东区机场路88号 邮编100000';
$parsed = AddressParser::parse($raw);
print_r($parsed);
输出结果是:
[
'name' => '张三',
'mobile' => '13512345678',
'idn' => '410123199001011234',
'postcode' => '100000',
'province' => '四川省',
'city' => '攀枝花市',
'area' => '东区',
'detail' => '机场路88号'
]
你可以拿这些字段去存数据库,或者回填表单都行。
整个项目是纯 PHP 实现的,没依赖 Laravel、ThinkPHP、Symfony 什么的,也不用数据库,装了就能用,适合绝大多数项目接入。
如果你是开发者,那用 Composer 安装就行:
composer require hejunjie/address-parser
然后直接调用静态方法:
use Hejunjie\AddressParser\AddressParser;
$parsed = AddressParser::parse('张三 北京市朝阳区xxx小区 13512345678');
它会返回一个包含 name
、mobile
、province
、city
、area
、detail
等字段的数组。
GitHub 项目地址在这里,欢迎 Star、Fork、提 Issue: zxc7563598/php-address-parser
这个工具本来是我做项目时的一个小需求,后来觉得也许别人也会用得上,就整理了下发出来。
你是技术人员可以直接接入项目; 你不是技术人员,也可以直接用我做好的在线演示页面; 你有兴趣研究实现方式,那源码也完全开放了。
总之,有用你就拿去用就行,简单实用比啥都强。