Ну это грязный хак, но поможет отлично:
$var = '1.5';
var_dump(is_float($var+0));
Если строка - корректно преобразуется в float или int. Но тут нужно не забывать о существовании hex-записи, E-записи и кучах других вариантов...
Лучше бы объяснили, для какой конкретно цели это вам нужно. Тут проще либо регулярками решить, либо еще как-то, так как приведение типов в PHP сильно усложняет задачу.