如何将number_format的输出转换回PHP中的数字?

2020/12/30 22:41 · php ·  · 0评论

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)));
}

如果您使用的是5.3或更高版本(感谢ircmaxell),请使用numfmt_parse

您可以使用filter_var。例如

$num = '1,200,998';
$real_integer = filter_var($num, FILTER_SANITIZE_NUMBER_INT);
echo $real_integer;

将输出:

1200998

采用 ;
消毒过滤器

$ number1 ='$ 1,989.34';

    $number2 = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);//1989.34
    $number2 = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);//1,98934

更好的方法是在number_format函数本身中使用选项格式为

number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )

也就是说,如果您不需要','格式化字符串中的make,就像

$num=23.33333
echo number_format($num,2,'.','');

如果您需要将其作为float,则将其转换为float

$floatnum= (float) number_format($num,2,'.','');

$num = (float) str_replace(',', '', $num); 基本上,您可以删除逗号,然后将其强制转换为数字类型(浮点型或整型)。

我使用以下代码:

function remove_non_numerics($str)
{ 
    $temp       = trim($str);
    $result  = "";
    $pattern    = '/[^0-9]*/';
    $result     = preg_replace($pattern, '', $temp);

    return $result;
}

在这种情况下,可以使用如下的PHPround方法:round (12.000000, 2);

使用“ [^ 0-9。] +”正则表达式。

$formattedVal = '$9,99,999.99';
$unformattedVal = (float)preg_replace("/[^0-9.]+/", "", $formattedVal);
var_dump($unformattedVal);

为我工作。

本文地址:http://php.askforanswer.com/ruhejiangnumber_formatdeshuchuzhuanhuanhuiphpzhongdeshuzi.html
文章标签:
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!