<?php
$address = "湖南省常德市澧县码头铺镇杨家坊街道 高潇潇 18676867026";
$addressArr = getDetail($address);
echo '<pre>';
print_r($addressArr);
function getDetail(string $address){
$parse = [];
$parse['name'] = '';
$parse['mobile'] = '';
$parse['province'] = '';
$parse['city'] = '';
$parse['area'] = '';
$parse['address'] = '';
$search = ['收货地址', '地址', '收货人', '收件人', '收货', '邮编', '电话', '身份证号码', '身份证号', '身份证', ':', ':', ';', ';', ',', ',', '。', ];
$replace = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '];
$address = str_replace($search, $replace, $address);
$address = preg_replace('/ {2,}/', ' ', $address);
$address = preg_replace('/(\d{3})-(\d{4})-(\d{4})/', '$1$2$3', $address);
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);
}
$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));
}
preg_match('/(.*?(省|自治区|北京|天津|上海|重庆))/', $address, $matches);
if (count($matches) > 1) {
$parse['province'] = $matches[count($matches) - 2];
$address = preg_replace('/(.*?(省|自治区|北京|天津|上海|重庆))/', '', $address, 1);
}
preg_match('/(.*?(市|自治州|地区|区划|县))/', $address, $matches);
if (count($matches) > 1) {
$parse['city'] = $matches[count($matches) - 2];
$address = str_replace($parse['city'], '', $address);
}
preg_match('/(.*?(区|县|镇|乡|街道))/', $address, $matches);
if (count($matches) > 1) {
$parse['area'] = $matches[count($matches) - 2];
$parse['address'] = str_replace($parse['area'], '', $address);
}
return $parse;
}