【PHP】金額數(shù)字轉(zhuǎn)換成大寫形式
作者: 鄭曉 分類: PHP 發(fā)布于: 2012-07-11 13:22 瀏覽:8,746 評論(3)
最近做財(cái)務(wù)的一個功能,其中有一個地方需要將阿拉伯?dāng)?shù)字形式的金額顯示成大寫(老寫)的漢字形式,于是有了下面的代碼。。。(要直接插入主題~)
13) { //簡單的錯誤處理
echo "數(shù)額太大,已經(jīng)超出萬億.";
die();
} elseif($len_pointdigit>2) { //$len_pointdigit小數(shù)點(diǎn)后有幾位
echo "小數(shù)點(diǎn)后只支持2位.";
die();
}
} else { //無小數(shù)點(diǎn)
$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ù)點(diǎn)后兩位都是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)載時(shí)請注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/php-the-amount-of-digital-converted-to-uppercase.html
多謝了,正在找這個. 不過有點(diǎn)問題呢,
1234567890
->壹拾億貳億叁仟萬肆佰萬伍拾萬陸萬柒仟捌佰玖拾元整
如何修改
你好,如果你的文件使用utf-8編碼話,請將“字符串轉(zhuǎn)換成數(shù)組”那里,把長度2修改為3。否則會拆分成亂碼導(dǎo)致判斷失敗。