PHP用逗号替换点不起作用

时间:2013-09-26 16:08:11

标签: php format

我有这种数字格式:

39289.95

我希望它看起来像:

39289,95

我的问题是,如果我使用:

str_replace('.', ',', $data)

strtr($data, '.', ',')

number_format($data, 2, ',', '')

我得到了

39289.00

我尝试在使用str函数之前将变量转换为字符串,但没有运气它总是给我一个'点'和最后2个零。如何将数据格式化为39289,95?

请注意,数据来自odbc插件,但我认为它不会改变任何内容。它似乎是一个简单的问题,但我尝试的只是“应该”工作,因为我在许多论坛和stackoverflow问题搜索,但我没有。 谢谢。

编辑(完整代码):

while (odbc_fetch_row($r)) {


  printf("<tr class='ter%s' >",trim(odbc_result($r,1)));

  printf("<td> %s</td>",odbc_result($r,1));


  $data = odbc_result($r,2);

  $str = preg_replace('/\./', ',', $data);
  //$data = number_format($data, 2, '.', '');
  //$data = strtr($data, ".", ",");
  //$data = str_replace('.',',',$data);
  printf("<td align=right> %6.2f</td>",$str);

  echo "</tr>\n";
}
 }

2 个答案:

答案 0 :(得分:0)

问题在于“printf”,它使用点(。)

将字符串转换回数字
while (odbc_fetch_row($r)) { 

    printf("<tr class='ter%s' >",trim(odbc_result($r,1)));

    printf("<td> %s</td>",odbc_result($r,1));

    $data = odbc_result($r,2);

    $str = preg_replace('/\./', ',', $data);
    $str2 = sprintf("<td align=right> %6.2f</td>",$str);
    echo str_replace('.',',',$str2);
    echo "</tr>\n";
}

答案 1 :(得分:0)

你可以在这里阅读Comma as a decimal separator in sprintf in en_CA locale

您不必链接preg_replaceprintfstr_replace,只需使用number_format根据需要格式化您的号码:

...
$data = odbc_result($r, 2);
printf("<td align=right> %s</td>", number_format($data, 2, ',', ''));
echo "</tr>\n";
...

echo "<td align=right> ".number_format($data, 2, ',', '')."</td>";