序列号检查器

时间:2010-11-28 04:36:33

标签: php

我正在尝试创建一个序列号检查器。

序列号在范围内 A87594 - A92778
AB34534 - AC23405
B23933 - C344444

我能够使用 range()为第一个序列号示例获取数字,我猜我需要使用 explode()但是我不知道如何将字母分解为变量,将数字分解为单独的变量。

if($_POST['submit']) {

    $snum = $_POST['serial_number'];

    // 1952
    $jan01_jan07 = range(87594, 92478);

    if (in_array($snum, $jan01_jan07)) {
        echo 'You have a 1952 Widget';
    }
    else {
        echo 'Your serial number is unknown';
    }
}

2 个答案:

答案 0 :(得分:1)

您可以尝试使用strcmp,因为它会检查两个字符串,因此您可以检查传入数据是否等于或大于下限并且小于或等于上限,如下所示:

$data = $_POST['data']; // change this accordingly

if(strcmp($data, $lowerBound) >= 0 && strcmp($data, $upperBound) <= 0) {
    // successful match
}

因为strcmp返回-1,0,1如果$ data在之前,与$ lowerBound(字典有序)之后相同,所以这也适用于字符串。

答案 1 :(得分:0)

尝试以下几点:

preg_match('/([A-C]+)(\d+)/', $serial, $matches);
list(, $characters, $numbers) = $matches;

从某种程度上来说,取决于管理你的连续出版物的确切规则,这些内容应该是这样的:

if ($characters == 'A' && 87594 <= $numbers && $numbers <= 92778) {
    return true;
} else if ($characters == 'AB' …) ...