从PHP的字符串中提取数字时,十进制丢失

时间:2018-12-16 06:02:33

标签: php regex

我试图从字符串中提取数字和小数点,但是当我使用以下正则表达式时,小数点会丢失:

<?php
$str = "$40.0000";
echo $str;
echo "<br />";
$pattern = "/\D+/";
$str = preg_replace($pattern, '', $str);
echo $str;
?>

输出:

$40.0000
400000 

我也想保留点。如何在我的正则表达式中包含点号?

2 个答案:

答案 0 :(得分:1)

<?php
$str = '$40000.00';
echo preg_replace('/[^\d.]/','',$str);

这里也有几个很好的答案:How do I convert output of number_format back to numbers in PHP?

答案 1 :(得分:0)

为此目的,有两个适当的功能。第一个round()将值四舍五入到指定的小数位数。函数的第一个参数是要四舍五入的数字。它可以是数字,也可以是具有数字值的变量。第二个参数是可选的;它表示要舍入的小数位数。例如:

回合(4.30); // 4 回合(4.289,2); // 4.29 $ num = 236.26985; 四舍五入($ num); // 236 在这种情况下可以使用的另一个函数是number_format()。它像round()一样工作,它需要一个数字(或带有数字值的变量)和一个可选的十进制说明符。此功能的另一个好处是用逗号格式化数字,这通常是这样写的:

number_format(428.4959,2); // 428.50 number_format(428,2); // 428.00 number_format(123456789); // 123,456,789