How can PHP developers improve the accuracy of address parsing functions when dealing with complex address structures?

Complex address structures can be challenging to parse accurately. To improve the accuracy of address parsing functions, developers can utilize regular expressions to match specific patterns within the address string. By breaking down the address into its components such as street, city, state, and zip code, developers can create more robust parsing algorithms that can handle a variety of address formats.

function parseAddress($address) {
    $pattern = '/^(.+),\s*(.+),\s*(.+),\s*(\d{5})$/';
    if (preg_match($pattern, $address, $matches)) {
        $street = $matches[1];
        $city = $matches[2];
        $state = $matches[3];
        $zip = $matches[4];
        return array('street' => $street, 'city' => $city, 'state' => $state, 'zip' => $zip);
    } else {
        return false; // Address format not recognized
    }
}

// Example usage
$address = "123 Main St, Springfield, IL, 12345";
$parsedAddress = parseAddress($address);
if ($parsedAddress) {
    echo "Street: " . $parsedAddress['street'] . "\n";
    echo "City: " . $parsedAddress['city'] . "\n";
    echo "State: " . $parsedAddress['state'] . "\n";
    echo "Zip Code: " . $parsedAddress['zip'] . "\n";
} else {
    echo "Unable to parse address.";
}