mmm, per questo tipo di controlli si può usare un piccolo artifizio
con questo semplice giochino la variabile prima si trasforma in numero e poi in stringa riconfrontandola con il valore di partenzaCodice PHP:
if ((string)((int)$variabile) != $variabile)
{
// non è un numero
}
se sono diversi vuol dire che non era un numero oppure che dopo il valore numero erano presenti altri dati non ammessi
alternativamente un is_numeric potrebbe andare pure bene