如何在PHP中设置货币格式
我正在制作房地产门户网站。在该网站中,用户输入了物业价值,如 55,00000-45,35000-30,00000等等。 我的问题是,我想将这些值显示为 55 Lac(s)-45.35 Lac(s)-30 Lac(s)等等。所以请……建议我,我如何才能做到这一点如何在PHP中设置货币格式,php,Php,我正在制作房地产门户网站。在该网站中,用户输入了物业价值,如 55,00000-45,35000-30,00000等等。 我的问题是,我想将这些值显示为 55 Lac(s)-45.35 Lac(s)-30 Lac(s)等等。所以请……建议我,我如何才能做到这一点 谢谢您可以在php中使用money\u format()函数 要在窗口中使用money\u format(),如果您有Intl扩展名,可以使用 -根据格式化程序规则格式化货币值。 手册中的示例 $fmt = new NumberForm
谢谢您可以在php中使用
money\u format()
函数
要在窗口中使用money\u format()
,如果您有Intl扩展名,可以使用
-根据格式化程序规则格式化货币值。
手册中的示例
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";
$fmt = new NumberFormatter( 'ru_RU', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";
输出
1.234.567,89 €
1.234.567,89 RUR
1 234 567,89€
1 234 567,89р.
另请参阅我关于如何将格式化的货币字符串解析回浮点的回答:用于Zend Framework
而对于核心php
你可以使用这个功能
function formatInCurrencyStyle($num){
$pos = strpos((string)$num, ".");
if ($pos === false) {
$decimalpart="00";
}
if (!($pos === false)) {
$decimalpart= substr($num, $pos+1, 2); $num = substr($num,0,$pos);
}
if(strlen($num)>3 & strlen($num) <= 12){
$last3digits = substr($num, -3 );
$numexceptlastdigits = substr($num, 0, -3 );
$formatted = makeComma($numexceptlastdigits);
$stringtoreturn = $formatted.",".$last3digits.".".$decimalpart ;
}elseif(strlen($num)<=3){
$stringtoreturn = $num.".".$decimalpart ;
}elseif(strlen($num)>12){
$stringtoreturn = number_format($num, 2);
}
if(substr($stringtoreturn,0,2)=="-,"){
$stringtoreturn = "-".substr($stringtoreturn,2 );
}
return $stringtoreturn;
}
function makeComma($input){
if(strlen($input)<=2)
{ return $input; }
$length=substr($input,0,strlen($input)-2);
$formatted_input = makeComma($length).",".substr($input,-2);
return $formatted_input;
}
函数formatInCurrencyStyle($num){
$pos=strpos((字符串)$num,“.”);
如果($pos==false){
$decimalpart=“00”;
}
如果(!($pos==false)){
$decimalpart=substr($num,$pos+1,2);$num=substr($num,0,$pos);
}
如果(strlen($num)>3和strlen($num)使用number\u格式
:
您也可以使用货币\u格式
:
在正常情况下,money_格式是理想的方式,但由于您需要使用类似于“Lac”的格式,您需要根据条件编写自己的代码
首先从用户输入的金额中删除所有逗号。就像这样
$number = str_replace(',', '', $number);
然后检查并生成所需字符串
if($number > 10000000)
{
$num = ((float)$number) / 10000000;
$num = $num.' Crore(s)'
}
else if($number > 100000)
{
$num = ((float)$number) / 100000;
$num = $num.' Lac(s)'
}
else if($number > 1000)
{
$num = ((float)$number) / 1000;
$num = $num.' Thousand(s)'
}
用一个简单的方法
number_format(200000) // 200,000
为什么不简单地显示值除以100000?下降。这不是一个解决方案。@SaurabhChandraPatel:我知道,我没有把它作为答案添加。但是如果他只需要x.yz.lac(s)那么他为什么不应该使用它呢?@fall…..谢谢,伙计,这么简单…我不知道为什么我没有想到它…..无论如何…..谢谢…..一个lotsidenote:正如文档中指定的,此函数输出受区域设置的影响。
$number = str_replace(',', '', $number);
if($number > 10000000)
{
$num = ((float)$number) / 10000000;
$num = $num.' Crore(s)'
}
else if($number > 100000)
{
$num = ((float)$number) / 100000;
$num = $num.' Lac(s)'
}
else if($number > 1000)
{
$num = ((float)$number) / 1000;
$num = $num.' Thousand(s)'
}
number_format(200000) // 200,000