php实现智能解析收货地址拆分地址字符串为数组代码

代码语言:php

所属分类:其他

代码描述:php实现智能解析收货地址拆分地址字符串为数组代码

代码标签: php 智能 解析 收货 地址 拆分

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php
/**
* 此过程不需要查询数据库,是纯PHP
*/
class Address
{
 
    /**
     * 地址智能解析
     * @param string 包含丰富信息的字符串
     * @return array 姓名,手机号,邮编,详细地址
     */
    public static function smart_parse($address)
    {   
        //解析结果
        $parse = [];
        $parse['name']     = '';
        $parse['mobile']   = '';
        $parse['postcode'] = '';
        $parse['idno']     = '';
        $parse['detail']   = '';
 
        //1. 过滤掉收货地址中的常用说明字符,排除干扰词
        $search = ['收货地址', '地址', '收货人', '收件人', '收货', '邮编', '电话', '身份证号码', '身份证号', '身份证', ':', ':', ';', ';', ',', ',', '。', ];
        $replace = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '];
        $address = str_replace($search, $replace, $address);
 
        //2. 连续2个或多个空格替换成一个空格
        $address = preg_replace('/ {2,}/', ' ', $address);
 
        //3. 去除手机号码中的短横线 如136-3333-6666 主要针对苹果手机
        $address = preg_replace('/(\d{3})-(\d{4})-(\d{4})/', '$1$2$3', $address);
 
        //4. 提取中国境内身份证号码
        preg_match('/\d{18}|\d{17}X/i', $address, $match);
        if ($match && $match[0]) {
            $parse['idno'] = strtoupper($match[0]);
            $address = str_replace($match[0], '', $address);
        }
 
        //5. 提取11位手机号码或者7位以上座机号
        preg_match('/\d{7,11}|\d{3,4}-\d{6,8}/', $address, $match);
        if ($match && $match[0]) {
            $parse['mobile'] = $match[0];
            $address = str_replace($match[0], '', $addre.........完整代码请登录后点击上方下载按钮下载查看

网友评论0