删除小数,跟随数字并舍入值

时间:2013-11-06 03:21:31

标签: php regex

我有以下数据。

$96.2k
$75.2k
$44.4k
$35.6k
Etc.......

我想要做的是替换十进制和小数后面的任何数字。然后我想将整数舍入到最接近的十分之一。

我的所有数据都在10k90k

之间

所以预期的输出将是..

$100k
$80k
$40k
$40k

我知道我可以使用preg_replace('/\.[0-9]+/', '', $data);删除小数和数字,但是我可以不使用带函数的常规preg_replace吗?

2 个答案:

答案 0 :(得分:2)

<?php

$number = '$96.2k';

$number = str_replace(array('$', 'k'), '', $number);
$number = round($number, -1); // -1 rounds to nearest 10

echo '$' . $number . 'k';
// $100k    

?>

有关回合的更多信息:http://php.net/manual/en/function.round.php

答案 1 :(得分:1)

我会使用preg_replace

而不是preg_replace_callback
$data = preg_replace_callback('/([0-9]+)\.[0-9]+/',   # capture first group of digits
      function($m) {                                  # $m is your captured match
         return round($m[1], -1);                     # round our captured match
      }, $data);

将您的匹配($m)四舍五入到最接近的10.请查看round以了解参数的使用情况。

请参阅working demo