-2

以下のように、郵便番号地域のリストがあります (左側の部分のみ)。

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

入力した郵便番号 (IV21 など) がリストに含まれているかどうかを確認する PHP 関数が必要です。

これは非常に単純ですが、リストは IV1-28 のような形式であり、「通常の」リストなどではありませんIV1,IV2,IV3,IV4,IV5,IV6...IV26,IV27,IV28

助けていただければ幸いです。前もって感謝します。

4

3 に答える 3

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);
于 2012-05-20T17:45:25.053 に答える
0

strpos 関数を使用します。見つかった場合は int を返し、そうでない場合は false を返します。IV1 と一致すると、IV11 が見つかった場合でも true になることに注意してください。したがって、次のスクリプトを使用します

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

「-」と「,」は、IV1 を検索した場合に IV11 が true を返さないように文字列が終了するようにするためのものです。

于 2012-05-20T18:30:40.267 に答える
0

http://php.net/manual/en/function.explode.php (リストを左側のみに分割するため)、左側を配列に追加し、http://php.net/manualを使用します。 /en/function.in-array.php - 必要なものに近い場所に移動する必要があります

于 2012-05-20T17:25:14.443 に答える