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


Removing ending zeros with one simple preg_replace?

我会用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);

提前谢谢你!

[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

只需使用 rtrim

return rtrim($value,'0');

rtrim()可以完成这项工作

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