ciao a tutti, come posso far controllare che tipo di dato mi viene passato in un form?

if($_POST['testata']=='' || $_POST['acquisto']=='' || $_POST['vendita']=='')
{
echo "$_POST[testata]
";
echo "$_POST[acquisto]
";
echo "$_POST[vendita]
";
echo "Non hai inserito uno dei valori

";
echo "Torna indietro e inserisci tutti i dati
";
}
elseif(is_string($_POST['acquisto']) || is_string($_POST['vendita']))
{
echo "$_POST[testata]
";
echo "$_POST[acquisto]
";
echo "$_POST[vendita]
";
echo "Impossibile inserire i dati nel Database

";
echo "I campi PREZZO DI ACQUISTO e PREZZO DI VENDITA devono contenere un numero decimale separato con un punto

";
echo "Torna indietro e inserisci tutti i dati
";
}
spiego meglio....

nel primo if controllo se le variabili sono vuote o no ed in caso negativo (cioè se contengono dei dati) passo al 2° if dove devo controllare se le variabili acquisto e vendita sono dei numeri o delle stringhe ed in caso siano delle stringhe deve comparire quel messaggio....come mai se inserisco ad esempio

testata: lkghg
acquisto: 6
vendita: 9
ottengo l'errore?

so bene che 6 può essere anche inteso come una stringa, quindi l'errore sta nel modo in cui passo i dati dal form? l'inserimento avviene in questo modo:

echo "<input type='text' name='acquisto'>";
echo "<input type='text' name='vendita'>";

ho cercato su internet ma non esiste un type='number'...

come posso fare?
ho pensato ad un controllo di tutti i caratteri della variabile ed in caso viene trovata una lettera da A a Z deve ritornare l'errore...ma non c'è un modo più semplice?

Grazie a tutti