WC_Shipping_Legacy_Local_Pickup::is_valid_postcode()publicWC 1.0

See if a given postcode matches valid postcodes.

Метод класса: WC_Shipping_Legacy_Local_Pickup{}

Хуков нет.

Возвращает

true|false.

Использование

$WC_Shipping_Legacy_Local_Pickup = new WC_Shipping_Legacy_Local_Pickup();
$WC_Shipping_Legacy_Local_Pickup->is_valid_postcode( $postcode, $country );
$postcode(строка) (обязательный)
Postcode to check.
$country(строка) (обязательный)
code Code of the country to check postcode against.

Код WC_Shipping_Legacy_Local_Pickup::is_valid_postcode() WC 8.7.0

public function is_valid_postcode( $postcode, $country ) {
	$codes              = $this->get_valid_postcodes();
	$postcode           = $this->clean( $postcode );
	$formatted_postcode = wc_format_postcode( $postcode, $country );

	if ( in_array( $postcode, $codes, true ) || in_array( $formatted_postcode, $codes, true ) ) {
		return true;
	}

	// Pattern matching.
	foreach ( $codes as $c ) {
		$pattern = '/^' . str_replace( '_', '[0-9a-zA-Z]', preg_quote( $c ) ) . '$/i';
		if ( preg_match( $pattern, $postcode ) ) {
			return true;
		}
	}

	// Wildcard search.
	$wildcard_postcode = $formatted_postcode . '*';
	$postcode_length   = strlen( $formatted_postcode );

	for ( $i = 0; $i < $postcode_length; $i++ ) {
		if ( in_array( $wildcard_postcode, $codes, true ) ) {
			return true;
		}
		$wildcard_postcode = substr( $wildcard_postcode, 0, -2 ) . '*';
	}

	return false;
}