PHP: разделить почтовый индекс на две части? - PullRequest
1 голос
/ 05 февраля 2012

Мне нужно разделить почтовый индекс Великобритании на две части. У меня есть код, который получает первую половину, но он не охватывает все (например, gir0aa). У кого-нибудь есть что-нибудь лучше, что проверяет все почтовые индексы Великобритании, а затем разбивает его на первую и вторую половину? Спасибо.

function firstHalf($postcode) {
if(preg_match('/^(([A-PR-UW-Z]{1}[A-IK-Y]?)([0-9]?[A-HJKS-UW]?[ABEHMNPRVWXY]?|[0-9]?[0-9]?))\s?([0-9]{1}[ABD-HJLNP-UW-Z]{2})$/i',$postcode))
    return preg_replace('/^([A-Z]([A-Z]?\d(\d|[A-Z])?|\d[A-Z]?))\s*?(\d[A-Z][A-Z])$/i', '$1', $postcode);
}

разделит ig62ts на ig6 или cm201ln на cm20.

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

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

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

Первая часть, которая остается, - это исходный код.Это может быть один буквенный символ, за которым следуют 1 или 2 цифры;два буквенных символа, за которыми следуют 1 или 2 цифры;или один или два символа, за которыми следует одна цифра, за которой следует дополнительный буквенный символ.

Есть несколько заметных исключений: SAN TA1 - это распознанный почтовый индекс, как и GIR 0AA;но это только два, которые не следуют стандартному шаблону.

Чтобы проверить, является ли почтовый индекс действительным, регулярное выражение на самом деле не подходит ... вам нужно выполнить поиск, чтобы получить эту информацию.

1 голос
/ 05 февраля 2012

Если вы не заботитесь о проверке, основываясь на информации здесь (внизу страницы есть различные регулярные выражения, в том числе ваши) http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom вы можете использовать для всего, кроме Ангильи

  $str = "BX3 2BB";
  preg_match('#^(.*)(\s+)?(\d\w{2})$#', $str, $matches);
  echo "Part #1 = " . $matches[1];
  echo "<br>Part #2 = " . $matches[3];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...