Как я преобразовываю вывод number_format назад к числам в PHP?

PHP не может распознать 1,200.00(сгенерированный number_format) но только 1200.00,

Каково общее решение для этой проблемы?

36
задан user198729 29 May 2010 в 17:05
поделиться

3 ответа

Вы можете удалить любой символ, который не является цифрой или десятичной точкой, и проанализировать его с помощью floatval :

$number = 1200.00;
$parsed = floatval(preg_replace('/[^\d.]/', '', number_format($number)));
var_dump($number === $parsed);  // bool(true)

И если число не имеет . как десятичная точка:

function parse_number($number, $dec_point=null) {
    if (empty($dec_point)) {
        $locale = localeconv();
        $dec_point = $locale['decimal_point'];
    }
    return floatval(str_replace($dec_point, '.', preg_replace('/[^\d'.preg_quote($dec_point).']/', '', $number)));
}
27
ответ дан 27 November 2019 в 05:51
поделиться

Вы можете сделать $ num = (float) str_replace (',', '', $ num); По сути, просто избавьтесь от запятых, а затем приведите его к числовому типу (float или int).

2
ответ дан 27 November 2019 в 05:51
поделиться

Если вы используете версию 5.3 или выше (спасибо ircmaxell), используйте numfmt_parse .

18
ответ дан 27 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: