php 邮编 类,PHP中邮编过滤功能 - xintaiideas的个人空间 - OSCHINA - 中文开源技术交流社区...

本文介绍了一个用于检查特定国家邮政编码有效性的PHP函数。该函数针对法国、西班牙等国家的邮编进行了特殊处理,以排除偏远地区的邮编。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public function checkZipCode($Countrycode, $Codepostal){

$sites = array("AD", "BT", "IM","GY","JE","HS","ZE");

switch ($Countrycode)

{

case "FR":

if ($Codepostal >= 20000 && $Codepostal <= 20999)

{

retutn false;

}

else

{

return true;

}

break;

case "ES":

if (($Codepostal >= 35000 && $Codepostal <= 35999)||($Codepostal >= 38000 && $Codepostal <= 38999)||($Codepostal >= 51000 && $Codepostal <= 51999)||($Codepostal >= 52000 && $Codepostal <= 52999))

{

retutn false;

}

elseif(int(substr($Codepostal,0,4))>= 7000 && int(substr($Codepostal,0,4))<= 7999)

{

retutn false;

}

else{

return true;

}

break;

case "AD":

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

break;

case "GB":

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

break;

case "PT":

if (int(substr($Codepostal,0,4))>= 9000 && int(substr($Codepostal,0,4))<= 9400)

{

retutn false;

}

elseif (int(substr($Codepostal,0,4))>= 9500 && int(substr($Codepostal,0,4))<= 9999)

{

retutn false;

}

else{

return true;

}

break;

case "GI":

retutn false;

break;

}

}

8df2c58aec2aea5cef932bf24e307a0f.png

代码重构版本

public function checkZipCode($Countrycode, $Codepostal){

$sites = array("AD", "BT", "IM","GY","JE","HS","ZE");

switch ($Countrycode)

{

case "FR":

if ($Codepostal >= 20000 && $Codepostal <= 20999)

{

retutn false;

}

else

{

return true;

}

break;

case "ES":

if (($Codepostal >= 35000 && $Codepostal <= 35999)||($Codepostal >= 38000 && $Codepostal <= 38999)||($Codepostal >= 51000 && $Codepostal <= 51999)||($Codepostal >= 52000 && $Codepostal <= 52999))

{

retutn false;

}

elseif(int(substr($Codepostal,0,4))>= 7000 && int(substr($Codepostal,0,4))<= 7999)

{

retutn false;

}

else{

return true;

}

break;

case "AD":

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

break;

case "GB":

if (in_array(substr($Codepostal,0,2)),$sites)

{

retutn false;

}

else

{

return true;

}

break;

case "PT":

if (int(substr($Codepostal,0,4))>= 9000 && int(substr($Codepostal,0,4))<= 9400)

{

retutn false;

}

elseif (int(substr($Codepostal,0,4))>= 9500 && int(substr($Codepostal,0,4))<= 9999)

{

retutn false;

}

else{

return true;

}

break;

case "GI":

retutn false;

break;

}

}

优化版本

/**

* 偏远地区邮编过滤

* @param $countryCode

* @param $postCode

* @return bool

*/

public function checkPostCode($countryCode, $postCode)

{

switch (strtoupper($countryCode)) {

case "FR":

if ($postCode >= 20000 && $postCode <= 20999) {

return false;

} else {

return true;

}

break;

case "ES":

if (($postCode >= 35000 && $postCode <= 35999) || ($postCode >= 38000 && $postCode <= 38999) || ($postCode >= 51000 && $postCode <= 51999) || ($postCode >= 52000 && $postCode <= 52999)) {

return false;

} elseif (intval(substr($postCode, 0, 4)) >= 7000 && intval(substr($postCode, 0, 4)) <= 7999) {

return false;

} else {

return true;

}

break;

case "AD":

if (strtoupper(substr($postCode, 0, 2)) == 'AD') {

return false;

} else {

return true;

}

break;

case "GB":

$postCodePrefix = array("BT", "IM", "GY", "JE", "HS", "ZE");

if (in_array(strtoupper(substr($postCode, 0, 2)), $postCodePrefix)) {

return false;

} else {

return true;

}

break;

case "PT":

if (intval(substr($postCode, 0, 4)) >= 9000 && intval(substr($postCode, 0, 4)) <= 9400) {

return false;

} elseif (intval(substr($postCode, 0, 4)) >= 9500 && intval(substr($postCode, 0, 4)) <= 9999) {

return false;

} else {

return true;

}

break;

case "GI":

return false;

break;

default :

return true;

break;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值