PHP - 简单的正则表达式

时间:2013-10-06 10:44:42

标签: php regex

考虑以下代码

$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.800000000000000 第二:0.800000000000000

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

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

您在末尾添加了<br>标记,而正则表达式在行结束前添加了0

'/0+$/'
    ^ <- end of line, nothing should come after 0's
".800000000000000"

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

答案 2 :(得分:1)

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

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