2012-05-20 6 views
-2

У меня есть список почтовых индексов областей (левая часть только), как показано ниже:проверка PHP почтовый индекс в списке

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

Что именно вы застряли с? –

+0

Я застреваю, потому что, как правило, поиск в списке для совпадения «IV21» вернет false, потому что в списке есть только «IV1-28» - я хочу, чтобы это возвращало true. Мне нужно как-то разбить IV1-28 (по коду, а не вручную) на его составные части, чтобы вход был проверен на все почтовые индексы с IV1 по IV28 - это тогда было бы правдой. – user892970

ответ

0

петли через массив кодов и разбивает их на число, затем проверяет, находится ли это число в пределах

$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); 
+0

Отлично, спасибо. Просто билет. Я голосовал, но это не позволит мне. – user892970

0

http://php.net/manual/en/function.explode.php (разделить список в только с левой стороны), добавьте левую часть в массив, и использовать http://php.net/manual/en/function.in-array.php - вы должны получить где-то близко к тому, что вам нужно

+0

Он уже разбит на левую сторону. Мне нужно, чтобы программный перевод (каким-то образом) IV1-28 в IV1, IV2, IV3, IV4, IV5, IV6, IV7, IV8, IV9, IV10, IV11, IV12, IV13, IV14, IV15, IV16, IV17, IV18, IV19, IV20, IV21, IV22, IV23, IV24, IV25, IV26, IV27, IV28 - тогда я могу проверить входные данные против списка. – user892970

+0

@user, так что вы хотите, чтобы кто-то написал для вас код? –

+0

Было бы неплохо, или скажите, если/как это можно сделать. – user892970

0

использование strpos функция. возвращает int, если найден, или false. обратите внимание, что соответствие IV1 даст истинное значение даже для IV11. поэтому используйте следующий скрипт

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

«-» и «» чтобы гарантировать, что строка заканчивается так, что IV11 не даст верно, если мы ищем IV1

Смежные вопросы