PHP检查邮政编码在列表中

时间:2012-05-20 17:20:32

标签: php function postal-code

我有一个邮政编码区域列表(仅限左手部分),如下所示:

IV1-28,IV30-32,IV36,IV40-49,IV52-56,IV63,KW1-3,KW5-14,PA21-38,PH1-26,PH30-41,PH49-50,LD1-99,SY16-20,SY23-25

我的输入是英国邮政编码,例如。 IV21

我需要一个PHP函数来检查输入的邮政编码(例如IV21)是否在列表中。

这很简单,但列表的格式为IV1-28,而不是IV1,IV2,IV3,IV4,IV5,IV6...IV26,IV27,IV28等“普通”列表。

非常感谢帮助。提前谢谢。

3 个答案:

答案 0 :(得分:1)

循环遍历代码数组并将它们分成数字,然后检查该数字是否在

范围内
$list = array("IV1-28","AB1-10");
$found = false;
$input = "AB10";
$inputCode = substr($input,0,2);
$inputNumber = substr($input,2);
foreach ($list as $l)
{
    $lCode = substr($l,0,2);
    $lNumber = substr($l,2);
    $listNumbers = explode("-",$lNumber);
    if (($inputNumber >= $listNumbers[0]) && ($inputNumber <= $listNumbers[1]) && ($inputCode==$lCode))
    {
        $found = true;
        break;
        }           
}

var_dump($found);

答案 1 :(得分:0)

http://php.net/manual/en/function.explode.php(将您的列表拆分为左侧),将左侧添加到数组中,并使用http://php.net/manual/en/function.in-array.php - 应该让您接近您需要的地方

答案 2 :(得分:0)

使用strpos功能。如果找到则返回int,否则返回false。请注意,即使找到了IV11,匹配IV1也会成立。所以使用以下脚本

$code="IV21";
$list="IV1-..........etc";
if(strpos($list,$code."-") || strpos($list,$code.",") { 
//true
}
else {
//false 
}

“ - ”和“,”是为了确保字符串结束,以便在我们搜索IV1时IV11不会给出