php智能识别收货地址信息

这篇博客介绍了如何使用PHP实现用户输入混合收货地址时,智能识别并提取地址、手机号和姓名的功能。文章强调了即使地址只包含第三级地区也能进行有效识别,并提到原本免费的代码因生活原因改为收费分享。
摘要由CSDN通过智能技术生成
功能需求:用户输入混合的收货地址,能智能识别出地址,手机,姓名
  • 能正常识别包含三级其中一项的地址,直白点说就是只包含第三级地区一样能识别出来
  • 代码不完成免费共享了,转为收费(删除部分代码),生活所迫!哈哈……

效果图:在这里插入图片描述
代码:

<?php
class DistinguishAddress {

/**
 * 类的入口方法
 * 传入地址信息自动识别,并返回最高匹配结果
 * 如果地址新增,则需要删除缓存文件重新缓存
 * @param $address
 */
function getAddressResult($address){
    // 优先第一种方法
    $result = $this->getAddressArrar($address);

    // 如果结果不理想,再模糊去匹配
    if($result['level'] != 3){
        $result_sub = $this->addressVague($address);
        // 只有全匹配对才替换,否则不做任何改变
        if($result_sub['level'] == 3){
            $result = $result_sub;
        }
    }

    // 联系方式-优先匹配电话
    if(preg_match('/1\d{10}/', $address, $mobiles)){ // 手机
        $result['mobile'] = $mobiles[0];
    } else if(preg_match('/(\d{3,4}-)?\d{7,8}/', $address, $mobiles)){ // 固定电话
        $result['mobile'] = $mobiles[0];
    }

    // 识别姓名-必须空格分享的--概率
    preg_match_all('/[\x{4e00}-\x{9fa5}]{2,}/iu', $address,$names);
    if($names){
        $name_where = '';
        foreach ($names[0] as $name){
            // 必须是大于1个字符且小于5个字符的
            if(1 < mb_strlen($name,'utf-8') && mb_strlen($name, 'utf-8') < 5){
                $sub_name = mb_substr($name, 0, 1, 'utf-8');
                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值