需要 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 数字格式的帮助的主要内容,如果未能解决你的问题,请参考以下文章