PHP code example of happenv-com / address-splitter
1. Go to this page and download the library: Download happenv-com/address-splitter library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
happenv-com / address-splitter example snippets
use Happenv\AddressSplitter\AddressSplitterService;
$splitter = new AddressSplitterService();
// Parse a Polish address
$result = $splitter->split('ul. Marszałkowska 123/45', 'PL');
echo $result->street; // "Marszałkowska"
echo $result->buildingNumber; // "123"
echo $result->apartmentNumber; // "45"
// Parse without country code (uses fallback strategies)
$result = $splitter->split('Baker Street 221B');
echo $result->street; // "Baker Street"
echo $result->buildingNumber; // "221B"
final readonly class ParsedAddress
{
public string $street;
public ?string $buildingNumber;
public ?string $apartmentNumber;
}
use Happenv\AddressSplitter\AddressSplitterService;
use Happenv\AddressSplitter\AddressSplitterConfiguration;
// Use default configuration (all countries)
$splitter = new AddressSplitterService();
// Explicitly use default configuration
$splitter = new AddressSplitterService(
AddressSplitterConfiguration::default()
);
// Start from empty configuration
$config = AddressSplitterConfiguration::empty();
$splitter = new AddressSplitterService($config);
use Happenv\AddressSplitter\AddressSplitterConfiguration;
use Happenv\AddressSplitter\Parsers\PolandParser\GenericPolishStrategy;
use Happenv\AddressSplitter\Parsers\PolandParser\PrefixedStreetStrategy;
$config = AddressSplitterConfiguration::default()
// Add strategy at the end (lower priority)
->append('PL', [new MyCustomPolishStrategy()])
// Add strategy at the beginning (higher priority)
->prepend('PL', [new MyHighPriorityStrategy()]);
use Happenv\AddressSplitter\GenericParsers\NumberFirstStrategy;
use Happenv\AddressSplitter\GenericParsers\StreetFirstStrategy;
$config = AddressSplitterConfiguration::default()
->withFallbackStrategies([
new NumberFirstStrategy(),
new StreetFirstStrategy(),
]);
use Happenv\AddressSplitter\AddressSplitterConfiguration;
use Happenv\AddressSplitter\ExternalParsers\GoogleAddressValidationStrategy;
use Happenv\AddressSplitter\Http\GuzzleHttpClient;
$googleStrategy = new GoogleAddressValidationStrategy(
httpClient: new GuzzleHttpClient(),
apiKey: 'YOUR_GOOGLE_API_KEY',
regionCode: 'PL', // optional - region hint
);
$config = AddressSplitterConfiguration::default()
->withExternalStrategies([$googleStrategy]);
$splitter = new AddressSplitterService($config);
use Happenv\AddressSplitter\ExternalParsers\OpenAiAddressParsingStrategy;
use Happenv\AddressSplitter\Http\CurlHttpClient;
$openAiStrategy = new OpenAiAddressParsingStrategy(
httpClient: new CurlHttpClient(),
apiKey: 'YOUR_OPENAI_API_KEY',
model: 'gpt-4o-mini', // optional, defaults to gpt-4o-mini
countryHint: 'Poland', // optional - country hint
);
$config = AddressSplitterConfiguration::default()
->withExternalStrategies([$openAiStrategy]);
$config = AddressSplitterConfiguration::default()
->withExternalStrategies([
$googleStrategy, // checked first
$openAiStrategy, // checked only if Google returns no result
]);
use Happenv\AddressSplitter\Dto\ParsedAddress;
use Happenv\AddressSplitter\Contracts\AddressParsingStrategyInterface;
use Happenv\AddressSplitter\Exceptions\CannotParseAddressException;
final class MyCustomStrategy implements AddressParsingStrategyInterface
{
public function parse(string $address): ParsedAddress
{
// Attempt to match the address
if (preg_match('/^(.+)\s+(\d+[a-z]?)$/i', $address, $matches)) {
return new ParsedAddress(
street: $matches[1],
buildingNumber: $matches[2],
);
}
// Throw exception if unable to parse
throw new CannotParseAddressException($address);
}
}
use Happenv\AddressSplitter\Parsers\AbstractParsingStrategy;
use Happenv\AddressSplitter\Dto\ParsedAddress;
final class MyRegexStrategy extends AbstractParsingStrategy
{
protected function getPatterns(): array
{
return [
'/^(?<street>.+)\s+(?<buildingNumber>\d+[a-z]?)(?:\/(?<apartmentNumber>\d+))?$/iu',
];
}
}
use Happenv\AddressSplitter\Http\CurlHttpClient;
$client = new CurlHttpClient();
use Happenv\AddressSplitter\Http\GuzzleHttpClient;
use GuzzleHttp\Client;
// With default client
$client = new GuzzleHttpClient();
// With custom Guzzle client
$client = new GuzzleHttpClient(new Client([
'timeout' => 5.0,
]));
use Happenv\AddressSplitter\Contracts\HttpClientInterface;
final class MyHttpClient implements HttpClientInterface
{
public function post(string $url, array $options = []): array
{
// Your implementation
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.