предложил is_float / is_numeric не будет работать, потому что is_float не принимает параметры запроса (которые являются строками), а is_numeric принимает что-то вроде "+ .1e0", что не то, что вы хотите. Надежным способом является использование регулярного выражения для проверки, например
$is_decimal = preg_match('/^\d+(\.\d+)?$/', $some_string);
выражение может варьироваться в зависимости от ваших потребностей. Например, выше также будет принимать «000,00» или «111111111111111».