php получает первую часть почтового индекса

Мне нужно извлечь первую часть почтового индекса для поиска, используя базу данных. Есть идеи?! Мне нужно это для реализации поискового модуля на сайте, который ищет некоторую релевантную информацию в соответствии с почтовым кодом. Но база данных, которую у меня есть для почтового кода, у нее нет второй части почтового индекса, там только первая часть. Его для британского почтового индекса. Итак, какие-нибудь идеи ?!

    Это не будет покрывать 100% всех возможных почтовых индексов Великобритании, но будет делать как 99,999% или около того 🙂

     /** * @param string $postcode UK Postcode * @return string */ function getUKPostcodeFirstPart($postcode) { // validate input parameters $postcode = strtoupper($postcode); // UK mainland / Channel Islands (simplified version, since we do not require to validate it) if (preg_match('/^[AZ]([AZ]?\d(\d|[AZ])?|\d[AZ]?)\s*?\d[AZ][AZ]$/i', $postcode)) return preg_replace('/^([AZ]([AZ]?\d(\d|[AZ])?|\d[AZ]?))\s*?(\d[AZ][AZ])$/i', '$1', $postcode); // British Forces if (preg_match('/^(BFPO)\s*?(\d{1,4})$/i', $postcode)) return preg_replace('/^(BFPO)\s*?(\d{1,4})$/i', '$1', $postcode); // overseas territories if (preg_match('/^(ASCN|BBND|BIQQ|FIQQ|PCRN|SIQQ|STHL|TDCU|TKCA)\s*?(1ZZ)$/i', $postcode)) return preg_replace('/^([AZ]{4})\s*?(1ZZ)$/i', '$1', $postcode); // well ... even other form of postcode... return it as is return $postcode; } 

    Данные испытаний:

     echo 'TW135BQ -> ', getUKPostcodeFirstPart('TW135BQ'), "\n"; echo 'gir0aa -> ', getUKPostcodeFirstPart('gir0aa'), "\n"; echo 'RG5 3SQ -> ', getUKPostcodeFirstPart('RG5 3SQ'), "\n"; echo 'AB51 0GQ -> ', getUKPostcodeFirstPart('AB51 0GQ'), "\n"; echo 'YO104EA -> ', getUKPostcodeFirstPart('YO104EA'), "\n"; echo 'SE154NS -> ', getUKPostcodeFirstPart('SE154NS'), "\n"; echo 'W1B4BD -> ', getUKPostcodeFirstPart('W1B4BD'), "\n"; 

    Результаты:

     TW135BQ -> TW13 gir0aa -> GIR0AA RG5 3SQ -> RG5 AB51 0GQ -> AB51 YO104EA -> YO10 SE154NS -> SE15 W1B4BD -> W1B 

    Обратите внимание: вы несете ответственность за предоставление действительного почтового индекса.

    EDIT: oops, он не распространяется на GIR 0AA, извините