wc_format_postcode()WC 1.0

Format the postcode according to the country and length of the postcode.

Hooks from the function

Return

String.

Usage

wc_format_postcode( $postcode, $country );
$postcode(string) (required)
Unformatted postcode.
$country(string) (required)
Base country.

wc_format_postcode() code WC 9.6.1

function wc_format_postcode( $postcode, $country ) {
	$postcode = wc_normalize_postcode( $postcode ?? '' );

	switch ( $country ) {
		case 'SE':
			$postcode = substr_replace( $postcode, ' ', -2, 0 );
			break;
		case 'CA':
		case 'GB':
			$postcode = substr_replace( $postcode, ' ', -3, 0 );
			break;
		case 'IE':
			$postcode = substr_replace( $postcode, ' ', 3, 0 );
			break;
		case 'BR':
		case 'PL':
			$postcode = substr_replace( $postcode, '-', -3, 0 );
			break;
		case 'JP':
			$postcode = substr_replace( $postcode, '-', 3, 0 );
			break;
		case 'PT':
			$postcode = substr_replace( $postcode, '-', 4, 0 );
			break;
		case 'PR':
		case 'US':
		case 'MN':
			$postcode = rtrim( substr_replace( $postcode, '-', 5, 0 ), '-' );
			break;
		case 'NL':
			$postcode = substr_replace( $postcode, ' ', 4, 0 );
			break;
		case 'LV':
			$postcode = preg_replace( '/^(LV)?-?(\d+)$/', 'LV-${2}', $postcode );
			break;
		case 'CZ':
		case 'SK':
			$postcode = preg_replace( "/^({$country})-?(\d+)$/", '${1}-${2}', $postcode );
			$postcode = substr_replace( $postcode, ' ', -2, 0 );
			break;
		case 'DK':
			$postcode = preg_replace( '/^(DK)(.+)$/', '${1}-${2}', $postcode );
			break;
	}

	return apply_filters( 'woocommerce_format_postcode', trim( $postcode ), $country );
}