vasildakov / postcode
英国邮政编码ValueObject
Requires
- php: >=8.1
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: dev-master
- php-coveralls/php-coveralls: dev-master
- phpmd/phpmd: dev-master
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: dev-master
- squizlabs/php_codesniffer: 4.0.x-dev
- symfony/var-dumper: 7.1.x-dev
- theseer/phpdox: dev-master
- vimeo/psalm: 4.x-dev
This package is auto-updated.
Last update: 2024-08-29 19:57:56 UTC
README
概述
Value Object 代表英国邮政编码
安装
以下是一个定义了对Postcode依赖的最小示例 composer.json
文件
{
"require": {
"vasildakov/postcode": "^1.1"
}
}
代码示例
创建邮政编码对象
use VasilDakov\Postcode\Postcode; // Create a Postcode $postcode = new Postcode('EC1V 9LB'); // Validate Postcode value print $postcode->valid();
执行简单的验证、解析和规范化
$postcode->normalise() // => "EC1V 9LB" $postcode->outcode() // => "EC1V" $postcode->incode() // => "9LB" $postcode->area() // => "EC" $postcode->district() // => "EC1" $postcode->subdistrict() // => "EC1V" $postcode->sector() // => "EC1V 9" $postcode->unit() // => "LB"
方法概述
定义
外部代码
外部代码是邮编中间空格之前的部分。它长两到四个字符。一些外部代码是非地理的,不透露邮件发送的地址。外部代码的例子包括 "L1","W1A","RH1","RH10" 或 "SE1P"。
内部代码
内部部分是邮编中间空格之后的部分。它长三个字符。内部代码有助于在邮政区域内投递邮件。内部代码的例子包括 "0NY","7GZ","7HF" 或 "8JQ"。
区域
邮政编码区域是外部代码的一部分。邮政编码区域长一到两个字符,全部是字母。邮政编码区域的例子包括 "L" 代表利物浦,"RH" 代表雷丁,"EH" 代表爱丁堡。邮政区域可能覆盖很大的区域,例如 "RH" 覆盖苏塞克斯北部,(这与历史上的雷丁关系不大,除了铁路联系),而 "BT" (贝尔法斯特) 覆盖整个北爱尔兰。
区域代码
区域代码是外部代码的一部分。它长两到四个字符。它不包括某些外部代码中找到的尾随字母。区域代码的例子包括 "L1","W1","RH1","RH10" 或 "SE1"。
子区域代码
子区域代码是外部代码的一部分。它通常不存在,只在特别高密度的伦敦区域存在。它长三到四个字符。它包括省略的区域尾随字母。子区域代码的例子包括 "W1A","EC1A","NW1W","E1W" 或 "SE1P"。
区域
邮政编码区域由邮政编码区域、单个空格和内部代码的第一个字符组成。它长四到六个字符(包括单个空格)。邮政编码区域的例子包括 "SW1W 0","PO16 7","GU16 7",或 "L1 8","CV1 4"。
单元
邮政编码单元是添加到邮政编码区域末尾的两个字符。每个邮政编码单元通常代表一条街道、街道的一部分、一个单独的地址、一组房产、一个单独的房产、房产的子区域、一个单独的组织或(例如驾驶员和车辆许可证机构)组织的子区域。区分的程度通常基于物业或企业收到的邮件数量。邮政编码单元的例子包括 "NY" (来自 "SW1W 0NY"),"GZ" (来自 "PO16 7GZ"),"HF" (来自 "GU16 7HF"),或 "JQ" (来自 "L1 8JQ")。
来源
- https://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom#Formatting
- https://en.wikipedia.org/wiki/London_postal_district#Numbered_divisions
关于邮政编码验证的说明
不能仅用正则表达式来验证邮政编码。正确的邮政编码验证需要有一个完整的邮政编码列表进行核对。依赖于正则表达式会产生错误的结果。
完整邮编列表可以从ONS邮编目录中获得,该目录每3个月更新一次。
许可证
以下代码在MIT许可证下发布。