2010-11-28 8 views
1

J'essaie de créer un vérificateur de numéro de série.Vérificateur de numéro de série

numéros de série sont dans des gammes
A87594 - A92778
AB34534 - AC23405
B23933 - C344444

Je suis en mesure d'obtenir les numéros de travailler en utilisant plage () pour le premier exemple du numéro de série, Je devine que je dois utiliser exploser() mais je ne savais pas comment faire exploser les lettres dans une variable et les nombres dans une variable séparée.

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'; 
    } 
} 
+1

Vous devriez utiliser des opérateurs de comparaison arithmétique au lieu de 'in_array()' sur un 'range()', d'autant plus que la plage peut être un très grand tableau. – BoltClock

+0

pouvez-vous donner un exemple s'il vous plaît? – ZaneDeFazio

+0

'if ($ snum> = 87594 && $ snum <92478)' – BoltClock

Répondre

1

Vous peut essayer d'utiliser strcmp, car il vérifie deux chaînes, de sorte que vous pouvez vérifier si les données entrantes sont égales ou supérieures à la limite inférieure et inférieures ou égales à la limite supérieure, comme ceci:

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

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

Comme strcmp renvoie -1, 0, 1 si les données $ est avant, le même que et après lowerBound $ (dictionnaire ordonné), de sorte que cela fonctionne pour les chaînes aussi bien.

0

Essayez quelque chose le long de ces lignes:

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

De là est dépend sorte de les règles précises qui régissent vos publications en série, quelque chose le long de ces lignes devrait faire:

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