<?php
function splitStreetNameNumber($str, $numRequired = false) {
$str = trim($str);
$tmp = @preg_split('/[0-9]+/', $str);
print_r($tmp);
if ( (0 >= strlen($str) || 0 >= strlen(trim($tmp[0]))) ||
($numRequired && (!isset($tmp[1]) || (isset($tmp[1]) && 0 >= strlen(trim($tmp[1]))))) ) {
return false;
}
return array(
'name' => trim($tmp[0]),
'num' => trim(str_replace(trim($tmp[0]), '', $str)),
);
}
$a = array(
'Karlstr. 2',
'12345',
'Karl Straße 2d',
'Karlsplatz 14 a',
'',
'Karlsplatz',
);
foreach($a as $b) {
$c = splitStreetNameNumber($b);
if (!$c) {
printf("Match result for '%s': Not a valid address.\r\n", $b);
}
else {
printf("Match result for '%s': Streetname: '%s', Streetnumber: '%s'.\r\n", $b, $c['name'], $c['num']);
}
/* Prints:
* Streetname: 'Karlstr.', Streetnumber: '2'.
* Not a valid address.
* Streetname: 'Karl Straße', Streetnumber: '2d'.
* Streetname: 'Karlsplatz', Streetnumber: '14 a'.
* Not a valid address.
* Streetname: 'Karlsplatz', Streetnumber: ''.
*/
}
foreach($a as $b) {
$c = splitStreetNameNumber($b, true);
if (!$c) {
printf("Match result for '%s': Not a valid address.\r\n", $b);
}
else {
printf("Match result for '%s': Streetname: '%s', Streetnumber: '%s'.\r\n", $b, $c['name'], $c['num']);
}
/* Prints:
* Streetname: 'Karlstr.', Streetnumber: '2'.
* Not a valid address.
* Streetname: 'Karl Straße', Streetnumber: '2d'.
* Streetname: 'Karlsplatz', Streetnumber: '14 a'.
* Not a valid address.
* Not a valid address.
*/
}
preferences:
48.21 ms | 402 KiB | 5 Q