我有一个邮政编码区域列表(仅限左手部分),如下所示:
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
等“普通”列表。
非常感谢帮助。提前谢谢。
答案 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不会给出