Basic Usage
Validating and formatting postal codes for different countries.
Validation
Section titled “Validation”use Cline\PostalCode\PostalCode;
// Basic validation$result = PostalCode::validate('90210', 'US');
if ($result->isValid()) { echo "Valid: " . $result->formatted();} else { echo "Invalid: " . $result->error();}Country-Specific Examples
Section titled “Country-Specific Examples”United States
Section titled “United States”// 5-digit ZIPPostalCode::isValid('90210', 'US'); // true
// ZIP+4PostalCode::isValid('90210-1234', 'US'); // true
// InvalidPostalCode::isValid('9021', 'US'); // false (too short)PostalCode::isValid('902101', 'US'); // false (too long)United Kingdom
Section titled “United Kingdom”// Various UK formatsPostalCode::isValid('SW1A 1AA', 'GB'); // truePostalCode::isValid('M1 1AE', 'GB'); // truePostalCode::isValid('B33 8TH', 'GB'); // truePostalCode::isValid('CR2 6XH', 'GB'); // truePostalCode::isValid('DN55 1PT', 'GB'); // true
// Case insensitivePostalCode::isValid('sw1a 1aa', 'GB'); // trueGermany
Section titled “Germany”// 5-digit postal codesPostalCode::isValid('10115', 'DE'); // true (Berlin)PostalCode::isValid('80331', 'DE'); // true (Munich)
// InvalidPostalCode::isValid('1011', 'DE'); // falsePostalCode::isValid('101155', 'DE'); // falseCanada
Section titled “Canada”// Format: A1A 1A1PostalCode::isValid('K1A 0B1', 'CA'); // truePostalCode::isValid('M5V 2T6', 'CA'); // true
// Without spacePostalCode::isValid('K1A0B1', 'CA'); // trueOther Countries
Section titled “Other Countries”// France (5 digits)PostalCode::isValid('75001', 'FR'); // true
// Netherlands (4 digits + 2 letters)PostalCode::isValid('1012 AB', 'NL'); // true
// Japan (7 digits with hyphen)PostalCode::isValid('100-0001', 'JP'); // true
// Australia (4 digits)PostalCode::isValid('2000', 'AU'); // true
// Brazil (8 digits with hyphen)PostalCode::isValid('01310-100', 'BR'); // trueFormatting
Section titled “Formatting”// Auto-format based on country rules$result = PostalCode::validate('sw1a1aa', 'GB');$result->formatted(); // "SW1A 1AA"
$result = PostalCode::validate('k1a0b1', 'CA');$result->formatted(); // "K1A 0B1"
// Get without formatting$result->input(); // Original input$result->normalized(); // Cleaned but not formattedValidation Result
Section titled “Validation Result”$result = PostalCode::validate('90210', 'US');
// Check validity$result->isValid(); // true
// Get formatted value$result->formatted(); // "90210"
// Get country$result->country(); // "US"
// For invalid codes$result = PostalCode::validate('invalid', 'US');$result->isValid(); // false$result->error(); // "Invalid postal code format for US"Batch Validation
Section titled “Batch Validation”$postalCodes = ['90210', '10001', 'invalid', '94102'];
$results = array_map( fn($code) => [ 'code' => $code, 'valid' => PostalCode::isValid($code, 'US'), ], $postalCodes);