php извлекает почтовый индекс Великобритании и проверяет его - PullRequest
1 голос
/ 20 июня 2011

У меня есть несколько текстовых блоков, таких как

John+and+Co-Accountants-Hove-BN31GE-2959519

Мне нужна функция для извлечения почтового индекса "BN31GE". Может случиться, что он не существует и имеет текстовый блок без почтового индекса, поэтому функция также должна проверять, является ли извлеченный текст действительным почтовым индексом.

John+and+Co-Accountants-Hove-2959519

Ответы [ 3 ]

4 голосов
/ 20 июня 2011

Стандарт данных правительства Великобритании для почтовых индексов:

((GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2}))

Редактировать: У меня было выше в каком-то (личном) коде со ссылкой на ныне несуществующее правительство Великобританиистраница интернета.Соответствующим британским стандартом является BS7666, и информация об этом в настоящее время доступна здесь .Это перечисляет немного другое регулярное выражение.

2 голосов
/ 20 июня 2011

Найдите ниже код для извлечения действительного почтового индекса Великобритании.Возвращает массив, если почтовый индекс найден в противном случае пустым.

<?php
$getPostcode="";
$str="John+and+Co-Accountants-Hove-BN31GE-2959519";
$getArray = explode("-",$str);
if(is_array($getArray) && count($getArray)>0) {
    foreach($getArray as $key=>$val) {
        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",strtoupper($val),$postcode)) {
            $getPostcode = $postcode[0];
        }
    }
}
print"<pre>";
print_r($getPostcode); 
?>
0 голосов
/ 20 июня 2011

Используйте функцию регулярного выражения: preg_grep,

Я не знаю формат английских почтовых индексов, но вы могли бы пойти с чем-то вроде:

(-[a-zA-Z0-9]+-)+

Это соответствует

  • "- Бухгалтер -"
  • "- BN31GE -"

Затем вы можете всегда брать второе значение или вы можете улучшить свое регулярное выражение, чтобы оно точно соответствовало английским почтовым индексам, что-то вроде

 ([A-Z0-9]{6})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...