需要 PHP 数字格式的帮助

Posted

技术标签:

【中文标题】需要 PHP 数字格式的帮助【英文标题】:need help in PHP number format 【发布时间】:2012-02-03 06:25:25 【问题描述】:

大家好,我正在尝试使用 php number_format 格式化输入数字范围

输入概率

    1234 12345 123456789 123456789,50 123.45,00 123.456.78,50

输出应该是

点应为 3 位的乘数,最后两位(如果在输入范围内可用)数字应带有逗号分隔符

    1.234,00 12.345,00 123.456.789,00 123.456.789,50 12.345,00 12.345.678,50

输出应为荷兰语格式,点应为 3 位的乘数,最后两位应使用逗号分隔符

喜欢,这里是链接你可以put any input value from above list in textbox 你可以得到如下所示的输出

我正在使用的代码

echo numberFormat('12345');

function numberFormat($num)

     return preg_replace("/(?<=\d)(?=(\d3)+(?!\d))/",".",$num);

但它不适用于 (4),(5),(6) 从我的输入概率与输出匹配。

【问题讨论】:

【参考方案1】:

嗯,我认为是这样的:

$number = 1234.56
echo number_format($number, 2, ',', '.');

关于你可以检查的输入和所有的“。”删除它并将“,”替换为“。”

$number = "123.456,78";
$temp = str_replace(".", "", $number);
$temp2 = str_replace(",", ".", $temp);
echo number_format($temp2, 2, ',', '.');

希望对你有帮助

【讨论】:

嗨 Ernesto,感谢您的回答,但我尝试使用函数 numberformat($number) $temp = str_replace(".", "", $number); $temp2 = str_replace(",", ".", $temp);返回 number_format($temp2, 2, ',', '.'); $number = 1.234,00 我收到此错误“遇到格式不正确的数值”,请您帮忙, 好的,然后在 "echo number_format($temp2, 2, ',', '.');" 之前添加。添加 $temp2 = $temp2 * 1;所以你把它改成数字类型【参考方案2】:

这与@Emesto 解决方案非常相似,但强制输入了一个数字:

$num = '123.456.789,50';
$n = str_replace('.', '', $num);
$n = str_replace(',', '.', $n);

# $n is no longer a string
$n = $n + 0;

# so it should work fine in number_format
echo number_format($n,2,',','.');

PS:我刚刚测试了这段代码以确保它有效。

【讨论】:

【参考方案3】:
number_format($input,2,',','.');

应该可以的。

【讨论】:

我试过了,但是如果我的输入是来自输入概率的(4)和(5),那么呢? explode 上的第一个 explode - 如果结果有一个元素,请继续 number_format 它。如果它有两个元素,并且最后一个元素有两个数字,请执行$e[0]+$e[1]/100$e 是分解的元素)和number_format。在所有其他情况下,输入无效。【参考方案4】:
$temp=number_format((float)$number, 2, '.', '');

$inter =number_format($temp,2);

$temp1=str_replace(',','.',$inter);
$final=substr_replace($temp1,',',-3,1);

echo"$final";

希望对你有帮助

【讨论】:

以上是关于需要 PHP 数字格式的帮助的主要内容,如果未能解决你的问题,请参考以下文章

php中数字格式显示

php中的数字格式

PHP中的数字格式不正确[重复]

php数字格式[关闭]

php用逗号格式化数字

PHP数字格式不带逗号