我正在尝试创建一个序列号检查器。
序列号在范围内
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';
}
}
答案 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' …) ...