PHP - 简单的正则表达式


PHP - Simple Regular Expression

考虑下面的代码

$t = preg_replace('/0+$/','',".800000000000000"); //Replace last 0s

这给了我预期的 .8 输出

现在考虑以下代码

$a = .80;
$t = sprintf('%.15f', $a)."<br>";
echo "First : $t<br>";
$t = preg_replace('/0+$/','',$t);
echo "Second : $t <br>";

这给出了输出第一个 : 0.8000000000000000第二 :

0.8000000000000000

你能帮我找出为什么在这种情况下最后的 0 没有被正则表达式替换,因为预期的输出是 0.8 ?

由于您要使用以下行将<br>添加到$t的末尾:

$t = sprintf('%.15f', $a)."<br>";

您的正则表达式不再匹配尾随 0。 "<br>"演示文稿的一部分,您应该在最后添加它。

你在末尾附加一个 <br> 标签,而正则表达式在行尾之前说 0

'/0+$/'
    ^ <- end of line, nothing should come after 0's
".800000000000000"
$a = .80;
$t = sprintf('%.15f', $a)."<br>";
// $t = .800000000000000<br>

您的变量$t包含0.800000000000000<br>因此没有要切断的尾随零。

在追加 <br> 之前,您必须缩短字符串。