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;
}
}
代码重构版本
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;
}
}