我必须将地址和housenumber分成一个循环函数。
重要的是,这适用于任何类型的地址,因此我不能100%确定如何以最佳方式执行此操作。
地址可能看起来像
Mystreet 14a
Mystreet 4
Mystreet 4a
Wilderness and I have no housenumber
我猜逻辑应检查一个数字后跟一两个字母。
有什么好办法吗?
TO CLARIFY:这是对挪威语地址的查找,我认为该地址是一个或多个单词,后跟可选数字。该号码最后还可能包含一个可选字母(参见上面的示例)。
答案 0 :(得分:6)
试试这个解决方案。我使用preg_match
找到了您在问题中描述的挪威语地址:
$input_string = 'Mystreet test 33b';
$address = "";
$number = "";
$matches = array();
if(preg_match('/(?P<address>[^\d]+) (?P<number>\d+.?)/', $input_string, $matches)){
$address = $matches['address'];
$number = $matches['number'];
} else { // no number found, it is only address
$address = $input_string;
}
echo "Input: $input_string <br/>";
echo "Address: $address <br />";
echo "Number: $number";
示例输出:
Input: Mystreet test 33b
Address: Mystreet test
Number: 33b
答案 1 :(得分:-1)
我不是说这是完美的解决方案。但你可以考虑这个。
$address="Mystreet 4a";
$code = ereg_replace("[^0-9]", "",$address);
if(empty($code))
echo "No house number found";
else
{
$houseNumber = strstr($address, $code);
echo $houseNumber;
}
答案 2 :(得分:-1)
另一种方法是爆炸:
<?php
$addr = 'Mystreet 4a';
$parts = explode(' ', $addr);
echo $parts[0]; //this is the street (Mystreet)
echo $parts[1]; //this is the whole number (4a)
echo (int)$parts[1]; // this is the actual number (4)
?>