PHP не может распознать 1,200.00
(сгенерированный number_format
) но только 1200.00
,
Каково общее решение для этой проблемы?
Вы можете удалить любой символ, который не является цифрой или десятичной точкой, и проанализировать его с помощью 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)));
}
Вы можете сделать $ num = (float) str_replace (',', '', $ num);
По сути, просто избавьтесь от запятых, а затем приведите его к числовому типу (float или int).
Если вы используете версию 5.3 или выше (спасибо ircmaxell), используйте numfmt_parse .