Skip to content

Instantly share code, notes, and snippets.

@casperbakker
Created January 22, 2016 08:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save casperbakker/59183f1e7d9018835f00 to your computer and use it in GitHub Desktop.
Save casperbakker/59183f1e7d9018835f00 to your computer and use it in GitHub Desktop.
<?php
class AddressSplitter {
/**
* Splits an address line in to array of street, houseNumber, houseNumberExtension and additionToAddress
* @param $address
* @return array
*/
public static function splitAddress($address)
{
try {
$splittedAddress = \VIISON\AddressSplitter\AddressSplitter::splitAddress($address);
} catch (InvalidArgumentException $e) {
return [
'street' => $address,
'houseNumber' => null,
'houseNumberExtension' => null,
'additionToAddress' => null
];
}
$houseNumber = $splittedAddress['houseNumber'];
$houseNumberExtension = null;
$housenumberMatch = preg_match("/(\d+)/", $splittedAddress['houseNumber'], $splittedHouseNumber);
if ($housenumberMatch && strlen($splittedHouseNumber[0]) < $houseNumber)
{
$houseNumber = trim($splittedHouseNumber[0]);
$houseNumberExtension = trim(substr($splittedAddress['houseNumber'], strlen($splittedHouseNumber[0])));
}
return [
'street' => $splittedAddress['streetName'],
'houseNumber' => $houseNumber,
'houseNumberExtension' => $houseNumberExtension,
'additionToAddress' => $splittedAddress['additionToAddress2']
];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment