免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1603 | 回复: 0
打印 上一主题 下一主题

php数字转汉字的函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-22 11:31 |只看该作者 |倒序浏览
php数字转汉字的函数



Php代码

  1. /*********************数字转汉字***********************/
  2. function del0($num) //去掉数字段前面的0
  3. {
  4.     return "".intval($num);

  5. }

  6. function n2c($x) //单个数字变汉字

  7. {
  8.     $arr_n = array("零","一","二","三","四","五","六","七","八","九","十");
  9.     return $arr_n[$x];
  10. }

  11. function num_r($abcd) //读取数值(4位)
  12. {
  13.     $arr= array();
  14.     $str = ""; //读取后的汉字数值
  15.     $flag = 0; //该位是否为零
  16.     $flag_end = 1; //是否以"零"结尾
  17.     $size_r = strlen($abcd);
  18.     for($i=0; $i<$size_r; $i++)
  19.     {
  20.         $arr[$i] = $abcd{$i};
  21.     }
  22.     $arrlen = count($arr);
  23.     for($j=0; $j<$arrlen; $j++)
  24.     {
  25.         $ch = n2c($arr[$arrlen-1-$j]); //从后向前转汉字
  26.                   //echo $ch;
  27.                   //echo "<br>";
  28.         if($ch == "零" && $flag == 0){ //如果是第一个零
  29.             $flag = 1; //该位为零
  30.             $str = $ch.$str; //加入汉字数值字符串
  31.             continue;
  32.         }elseif($ch == "零"){ //如果不是第一个零了
  33.             continue;
  34.         }
  35.         $flag = 0; //该位不是零
  36.         switch($j)  {
  37.             case 0: $str = $ch;    $flag_end = 0; break; //第一位(末尾),没有以"零"结尾
  38.             case 1: $str = $ch."十".$str; break; //第二位
  39.             case 2: $str = $ch."百".$str; break; //第三位
  40.             case 3: $str = $ch."千".$str; break; //第四位
  41.         }
  42.     }
  43.     if($flag_end == 1) //如果以"零"结尾
  44.     {
  45.         mb_internal_encoding("UTF-8");
  46.         $str = mb_substr($str, 0, mb_strlen($str)-1); //把"零"去掉
  47.     }
  48.         if($arrlen == 2 && $arr[0] == 1){
  49.                 $str = substr($str,2);
  50.         }
  51.     return $str;
  52. }

  53. function num2ch($num) //整体读取转换
  54. {
  55.     $num_real = del0($num);//去掉前面的"0"
  56.     $numlen = strlen($num_real);
  57.         //echo "numlen=".$numlen."<br>";
  58.     if($numlen >= 9)//如果满九位,读取"亿"位
  59.     {
  60.         $y=substr($num_real, -9, 1);
  61.   //echo $y;
  62.         $wsbq = substr($num_real, -8, 4);
  63.         $gsbq = substr($num_real, -4);
  64.         $a = num_r(del0($gsbq));
  65.         $b = num_r(del0($wsbq))."万";
  66.         $c = num_r(del0($y))."亿";
  67.     }elseif($numlen <= 8 && $numlen >= 5) //如果大于等于"万"
  68.     {
  69.         $wsbq = substr($num_real, 0, $numlen-4);
  70.         $gsbq = substr($num_real, -4);
  71.         $a = num_r(del0($gsbq));
  72.         $b = num_r(del0($wsbq))."万";
  73.                   $c="";
  74.     }elseif($numlen <= 4) //如果小于等于"千"
  75.     {
  76.         $gsbq = substr( $num_real, -$numlen);
  77.         $a = num_r(del0($gsbq));
  78.                   $b="";
  79.                   $c="";
  80.     }
  81.     $ch_num = $c.$b.$a;
  82.     return $ch_num;
  83. }
  84. /******************数字转汉字结束********************/          
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP