使用一个简单的preg_replace删除结束零点?

时间:2013-10-24 12:59:34

标签: php regex null preg-replace zero

我会用php_replace删除结尾的零,我会有更好的功能。

值:

$value = 123.12300;

当前功能:

return preg_match('#[.,][0-9]+[0]+$#', $value) ? preg_replace('#[0]+$#', '', $value) : $value;

另一个功能:

return preg_replace('#([.,]{0,1}\d+)[0]+$#', '\\1', $value);

提前谢谢!

3 个答案:

答案 0 :(得分:1)

[0-9]+\d+贪婪地匹配。 (尽可能匹配)。它可以匹配尾随0之一。因此,请使用非贪婪版本\d*?

即使不是[.,]{0,1}.,也可以使模式匹配。只需使用[.,]

$pattern = '#([.,]\d*?)0+$|[.,]$#';

var_dump(preg_replace($pattern, '\1', '123.12300'));
# => 123.123
var_dump(preg_replace($pattern, '\1', '1234000'));
# => 1234000
var_dump(preg_replace($pattern, '\1', '123456780.000000100'));
# => 123456780.0000001
var_dump(preg_replace($pattern, '\1', '123456780.'));
# => 123456780

答案 1 :(得分:1)

只需使用rtrim

return rtrim($value,'0');

答案 2 :(得分:0)

rtrim()将完成这项工作

$value = 123.12300;
echo rtrim($value,'0');