繁体   English   中英

PHP:将邮政编码分为两部分?

[英]PHP: Split a postcode into two parts?

我需要将英国邮政编码分成两部分。 我有一些获取前半部分的代码,但没有涵盖所有内容(例如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。

Incode始终是一个数字,后跟两个字母字符,因此拆分的最简单方法是切掉最后三个字符,以便轻松进行验证。

修剪任何空间:纯粹是为了便于人类阅读而使用它们。

剩下的第一部分就是输出代码。 可以是单个字母字符,后跟1或2位数字; 两个字母字符,后跟1或2位数字; 或一个或两个字符,后跟一个数字,再跟一个附加的字母字符。

有两个值得注意的例外:SAN TA1是公认的邮政编码,GIR 0AA也是; 但这是仅有的两个不遵循标准模式的文件。

要测试邮政编码是否有效,正则表达式实际上并不足够……您需要进行查找以检索该信息。

如果您不关心验证,则根据此处的信息(在页面底部,会有不同的正则表达式,包括您自己的正则表达式) 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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM