beh, per quanto riguarda il verificare che il primo termine sia maggiore del secondo penso che un semplicecontrollo (if) possa essere sufficiente, ricordo che la funzione preg_match ha 3 argomenti, l'ultimo dei quali racchiude appunto i risultati trovati, quindi la funzione utilizzata in questo modo:
Codice PHP:
$str = "23-32";
$res = "termini non validi!";
$check = preg_match ("@([0-9]+)-([0-9]+)@", $str, $matches);
if ($check && isset($matches[1], $matches[2])) {
if ($matches[2] <= $matches[1]) {
$res = $matches[1] - $matches[2];
}
}
print $res;
penso potrebbe andare (ricordo anche che preg_math assegna all'indice 0 dell'arry dei risultati la parte di testo completa, dunque in questo caso 23-32, mentre ad indici successivi assegna le varie parti racchiuse tra parentesi tonde).
E' molto probabile (come sempre^^) che nel mio script vi siano errori, ma è giusto x rendere l'idea..
EDIT :: dimenticavo, come mai non consideri anche lo zero..?