[英]Extract house numbers from address string
我正在按需从国外数据库导入用户数据。 虽然我将门牌号码与街道名称分开,但另一个数据库却没有。
我用
preg_match_all('!\d+!')
排除数字。 这适用于这样的地址线:
streetname 60
但它不适用于这样的地址线:
streetname 60/2/3
在那种情况下,我最终会提取 60,并且 /2/3 保留在街道名称中。
不幸的是我不是正则表达式专家。 恰恰相反。 我的问题是我不仅需要能够检测数字,还需要能够检测斜杠和连字符。
有人可以帮我吗?
尝试:
preg_match_all('![0-9/-]+!', 'streetname 60/2/3', $matches);
要给出明确的答案,我们将必须了解您数据中的模式。
例如,在德国,我们有时不得不门牌号像13a
或23-42
,这也可以被写为23 - 42
一种可能的解决方案是匹配以数字开头的空格后的所有内容
preg_match_all('!\s(\d.*)!', 'streetname 60/2/3', $matches);
但是,如果您拥有13street
街道的美国数据,则会产生误报
此方法不使用正则表达式。 只有当它看到第一个数字时才会返回,由空格分解。 非常适合地址,例如 12 Street Road, Street Name 1234B
function getStreetNumberFromStreetAddress($streetAddress){
$array = explode(' ',$streetAddress);
if (count($array) > 0){
foreach($array as $a){
if (is_numeric($a[0])){
return $a;
}
}
}
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.