PHP智能解析收货地址.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
PHP智能解析收货地址 有问题,可以加⼊讨论群 QQ群:825042078 这段代码可以实现剥离出:⾝份证号,⼿机号,座机号,右边,同时出去字符⾥⾯的⼀些⼲扰词,只留下⽤于解析的详细地址 然后详细地址可以,通过第⼆段程序,分离出,省+市+区+ 街道地址 <?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], '', $address); } //6. 提取6位邮编 邮编也可⽤后⾯解析出的省市区地址从数据库匹配出 preg_match('/\d{6}/', $address, $match); if ($match && $match[0]) { $parse['postcode'] = $match[0]; $address = str_replace($match[0], '', $address); } //再次把2个及其以上的空格合并成⼀个,并⾸位TRIM $address = trim(preg_replace('/ {2,}/', ' ', $address)); //按照空格切分 长度长的为地址 短的为姓名 因为不是基于⾃然语⾔分析,所以采取统计学上⾼概率的⽅案 $split_arr = explode(' ', $address); if (count($split_arr) > 1) { $parse['name'] = $split_arr[0]; foreach ($split_arr as $value) { if (strlen($value) < strlen($parse['name'])) { $parse['name'] = $value; } } $address = trim(str_replace($parse['name'], '', $address)); } $parse['detail'] = $address; //parse['detail']详细地址可以传⼊另⼀个⽂件的函数,⽤来解析出:省,市,区,街道地址 var_dump($parse); } } $obj = Addres
- 粉丝: 171
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助