當(dāng)前位置:博客首頁>>PHP >> 閱讀正文

【PHP】金額數(shù)字轉(zhuǎn)換成大寫形式

作者: 鄭曉 分類: PHP 發(fā)布于: 2012-07-11 13:22 瀏覽:8,577 評論(3)


最近做財務(wù)的一個功能,其中有一個地方需要將阿拉伯?dāng)?shù)字形式的金額顯示成大寫(老寫)的漢字形式,于是有了下面的代碼。。。(要直接插入主題~)

13) { //簡單的錯誤處理
echo "數(shù)額太大,已經(jīng)超出萬億.";
die();
} elseif($len_pointdigit>2) { //$len_pointdigit小數(shù)點后有幾位
echo "小數(shù)點后只支持2位.";
die();
}
} else { //無小數(shù)點
$c = strlen($num);
$zheng = '整';
}
for($i=0;$i<$c;$i++) { //處理整數(shù)部分 $bit_num = substr($num, $i, 1); //逐字讀取 左->右
if($bit_num!=0 || substr($num, $i+1, 1)!=0) //當(dāng)前是零 下一位還是零的話 就不顯示
@$low2chinses = $low2chinses.$d[$bit_num];
if($bit_num || $i==$c-1)
@$low2chinses = $low2chinses.$e[$c-$i-1];
}
for($j=$len_pointdigit; $j>=1; $j--) { //處理小數(shù)部分
$point_num = substr($num, strlen($num)-$j, 1); //逐字讀取 左->右
if($point_num != 0)
@$low2chinses = $low2chinses.$d[$point_num].$p[$j-1];
// if(substr($num, strlen($num)-2, 1)==0 && substr($num, strlen($num)-1, 1)==0) //小數(shù)點后兩位都是0
}
$chinses = str_split($low2chinses,2); //字符串轉(zhuǎn)換成數(shù)組
//print_r($chinses);
for($x=sizeof($chinses)-1;$x>=0;$x--) { //過濾無效的信息
if($inwan==0&&$chinses[$x]==$e[4]) { //過濾重復(fù)的"萬"
$final[$y++] = $chinses[$x];
$inwan=1;
}
if($inyi==0&&$chinses[$x]==$e[8]) { //過濾重復(fù)的"億"
$final[$y++] = $chinses[$x];
$inyi=1;
$inwan=0;
}
if($chinses[$x]!=$e[4]&&$chinses[$x]!=$e[8]) //進(jìn)行整理,將最后的值賦予$final數(shù)組
$final[$y++] = $chinses[$x];
}
$newstring=(array_reverse($final)); //$final為倒數(shù)組,$newstring為正??梢允褂玫臄?shù)組
$nstring=join($newstring); //數(shù)組變成字符串
if(substr($num,-2,1)==0 && substr($num,-1)<>0) { //判斷原金額角位為0 ? 分位不為0 ?
$nstring=substr($nstring,0,(strlen($nstring)-4))."零".substr($nstring,-4,4); //這樣加一個零字
}
$fen="分";
$fj=substr_count($nstring, $fen); //如果沒有查到分這個字
return $nstring=($fj==0)?$nstring.$zheng:$nstring; //就將"整"加到后面
}
//示例
echo num_to_upper(1500);
//顯示: 壹仟伍佰元整
?>

php數(shù)字轉(zhuǎn)換成大寫

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/php-the-amount-of-digital-converted-to-uppercase.html

【PHP】金額數(shù)字轉(zhuǎn)換成大寫形式:目前有3 條留言

用戶評論頭像 雪鷹翔天發(fā)表于 2014年03月01日 12:35[回復(fù)]

多謝了,正在找這個. 不過有點問題呢,
1234567890
->壹拾億貳億叁仟萬肆佰萬伍拾萬陸萬柒仟捌佰玖拾元整

如何修改

    用戶評論頭像 鄭曉發(fā)表于 2014年03月01日 22:06[回復(fù)]

    你好,如果你的文件使用utf-8編碼話,請將“字符串轉(zhuǎn)換成數(shù)組”那里,把長度2修改為3。否則會拆分成亂碼導(dǎo)致判斷失敗。

用戶評論頭像 旭光發(fā)表于 2012年07月15日 20:52[回復(fù)]

學(xué)習(xí)下,

發(fā)表評論

change vcode