PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP基础 >> 基础文章 >> 

人民币大小写转换(PHP版)

人民币大小写转换(PHP版)

来源:phperz.com  作者:phperz.com  发布时间:2008-08-16
一个php写的人民币数字金额大小写转换的程序,个人测试过没发现

一个php写的人民币数字金额大小写转换的程序,个人测试过没发现什么错误,

下面贴出代码,欢迎大家测试.

以下为引用的内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>金额转大写--www.phperz.com</title>
</head>
<body>
<?php
function getcn($rmb){
$rmb=str_replace(",","",$rmb); //格式化一下类似1,000,000的金额
if (!ereg("^[0-9.]",$rmb))return "请输入正确的金额";
$arr1 = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
$arr2 = array('拾','佰','仟');
$arr=explode(".",$rmb);
$rmb_len=strlen($arr[0]); //整数部分
$j=0;
for ($i=0;$i<$rmb_len;$i++){
  $bit=$arr[0][$rmb_len-$i-1];
  $cn=$arr1[$bit];
  $unit=$arr2[$j];
    if ($i==0) {
    $re=$cn;
    }
    elseif ($i==4){
    $re=$cn."万".$re;
    $j=0;
 }
 elseif ($i==8) {
    $re=$cn."亿".$re;
    $j=0;
 }
 else{
 $j++;
 $re=$bit==0?"零".$re:$cn.$unit.$re;
 }
  }
if ($arr[1]){
$arr[1][0]==0?$re=$re."元零":$re=$re."元".$arr1[$arr[1][0]]."角"; //角
$arr[1][1]==0?$re=$re."零分":$re=$re.$arr1[$arr[1][1]]."分";      //分

}
//echo $re."<br>";
$re=preg_replace(array("/(零)+$/","/(零)+/","/零万/","/零亿/"),array("","零","万","亿"),$re); //替换一些数据
$arr[1]?$re:$re.="元整";
echo $re;
}
$rmb="10010110101.01";
echo $rmb."<br>";
getcn($rmb);
?>
</body>
</html>

只实现了大概的功能,对于输入的数据并没有严格的检查. 用时记得在多检查一下输入的数据.

个人觉得此题的难点在于转换11001000类似的数据,

1.金额分为整数部分和小数部分.转换时必须将他们拆开,分别转换.
2.建二个数组: $arr1(0-9的大写) 和 $arr2(金额单位:拾,佰,仟) 之所以没有把元,万,亿也放到这里是因为拾,佰,仟每过三位数,他们便会出现一次.而元,万,亿不是.
3.循环出整数部分的每一位数字做为$arr1的下标得到大写数字,同时检查当前位是不是元位,或万位,或亿位,如果是,把计数变量$j重置成0.如果不是:检查当前拾,佰,仟位是不是为零.如果为0则丢掉单位.如果不为零则用$j做$arr2的下标求得当前的单位.
4.检查当前的角位和分位是否为0,做出相应的操作,
5.程序执行完第3步后,对于11001000类似的金额会出现 "零零"或"零万"的数据,这一步主要是对这样的数据进行格式化.
  把末尾的零删掉,把中间出现的一个或多个零合并成一个零.把零万替换成万.
6.如果没有小数就再后面加个"元整".

Tags: 转换   大小写   转换   数据   php  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号