Поскольку это не было упомянуто
if(preg_match('/^\d+\.\d+$/', $string)){
$float = (float)$string;
}
Я думаю, is_numeric
- лучший выбор, но это тоже работает.
То, что у меня есть выше, соответствует только поплавкам, поэтому онидолжен иметь десятичную дробь.Чтобы сделать это необязательным, вместо этого используйте /^\d+(\.\d+)?$/
.
^
начало строки \d+
одна или несколько цифр \.
точка,буквально \d+
одна или несколько цифр $
конец строки
Для второго /^\d+(\.\d+)?$/
это то же самое, что и выше, за исключениемэто добавление:
(...)?
необязательная группа захвата, сопоставьте этот шаблон 0 или 1 раз.
То, что теперь должно быть очевидно, это то, что делает десятичную опцию необязательной.
Ура!