Десятичная проверка + PHP?


Как сделать проверку десятичных чисел в PHP?

:)

(десятичная точка необязательна) он должен принять ... Ноль , Один , Два , 0,123 , 0,2 , 12.34 и т. д.

4 2

4 ответа:

Подойдет ли вам что-нибудь из этого?

Ответы для английского языка уже были опубликованы. Числоформат ::parse () позаботится о других локалях, если вам нужно такое поведение:

$formatter = new NumberFormatter('de-DE', NumberFormatter::PATTERN_DECIMAL);
if ($formatter->parse($value) !== false) {
    # A correct numeric value in german locale, like '12.345,00001'
}

Предложенный is_float/is_numeric не будет работать, потому что is_float не принимает параметры запроса (которые являются строками), А is_numeric примет что-то вроде "+.1e0 " это не то, что вы хотите. Надежный способ-использовать регулярное выражение для проверки, например

 $is_decimal = preg_match('/^\d+(\.\d+)?$/', $some_string);

Выражение может меняться в зависимости от ваших потребностей. Например, выше будет также приниматься "000.00" или "111111111111111".