Alpha.Z写的数字转换为中文的类的补充

时间:2006-12-21 15:06:58   来源:  作者:whsong  点击:次  出处:技术无忧
关键字:Alph

去掉了一些多余的零

<?php
// 诸海加 2000-7-19
// xiaocui 2000-7-26

class ChineseNumber
{
  var $basical=array(0=>"零","一","二","三","四","五","六","七","八","九");
  //var $basical=array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
  var $advanced=array(1=>"十","百","千");
  //var $advanced=array(1=>"拾","佰","仟");
  var $top=array(1=>"万","亿");

  var $level;         // 以4位为一级

  // 先实现万一下的数的转换
  function ParseNumber($number)
  {
    if ($number>999999999999)     // 只能处理到千亿。
        return "数字太大,无法处理。抱歉!";
    if ($number==0)
        return "零";

    for($this->level=0;$number>0.0001;$this->level++,$number=floor($number / 10000))
    {
        // 对于中文来说,应该是4位为一组。
        // 四个变量分别对应 个、十、百、千 位。
        $n1=substr($number,-1,1);
        if($number>9)
          $n2=substr($number,-2,1);
        else
          $n2=0;
        if($number>99)
          $n3=substr($number,-3,1);
        else
          $n3=0;
        if($number>999)
          $n4=substr($number,-4,1);
        else
          $n4=0;

        if($n4)
          $parsed[$this->level].=$this->basical[$n4].$this->advanced[3];
        else
          if(($number/10000)>=1)     // 千位为0,数值大于9999的情况
            $parsed[$this->level].="零";
        if($n3)
          $parsed[$this->level].=$this->basical[$n3].$this->advanced[2];
        else
          if(!ereg("零$",$parsed[$this->level]) && ($number / 1000)>=1)   // 不出现连续两个“零”的情况
            $parsed[$this->level].="零";
        if($n2)
          $parsed[$this->level].=$this->basical[$n2].$this->advanced[1];
        else
          if(!ereg("零$",$parsed[$this->level]) && ($number / 100)>=1)   // 不出现连续两个“零”的情况
            $parsed[$this->level].="零";
        if($n1)
          $parsed[$this->level].=$this->basical[$n1];

        if($parsed[$this->level]!="零")
        {
          if(ereg("零$",$parsed[$this->level]))
            $parsed[$this->level]=substr($parsed[$this->level],0,strlen($parsed[$this->level])-2);
          if($this->level>0)
            $result=$parsed[$this->level].$this->top[$this->level].$result;
          else
            $result=$parsed[$this->level].$result;
        }
    }
    //for($this->level-=1;$this->level>=0;$this->level--)
    //{
    //   $result.=$parsed[$this->level].$this->top[$this->level];
    //}

    //if(ereg("零$",$result))
    //   $result=substr($result,0,strlen($result)-2);

    return $result;
   
  }
};

$c=new ChineseNumber();

你有email邮箱吗?经常收到垃圾邮件而烦吗?立即使用邮箱LOGO在线制作酷Email logo图片


相关文章

    无相关信息

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

300x250广告位招租