[php] 将数字金额转换大写

来源:互联网 发布:淘宝网狗狗宠物店 编辑:程序博客网 时间:2024/05/21 13:48

在网上找的代码改了改

<?phpclass Num2Cny {    public static $basical = array(0 => "零","壹","贰","叁","肆","伍","陆","柒","捌","玖");    public static $advanced = array( 1 => "拾","佰","仟");    public static function ParseNumber($number) {        $number = trim($number);        if ($number > PHP_INT_MAX)            return "数字太大,无法处理。抱歉!";                if ($number == 0)             return "零";         if(strpos($number,'.')) {            $number = round($number,2);            $data = explode(".",$number);            $data[0] = self::int($data[0]);            $data[1] = self::dec($data[1]);            return $data[0].(empty($data[1]) ? '整' : '').$data[1];        } else {            return self::int($number).'整';        }    }    public static function int($number){        $arr = array_reverse(str_split($number));        $data = '';        $preIsZero = 0; //前一位是否是0        foreach ($arr as $k => $v){            $_chinese = '';            $x = $k % 4;             switch ($x){ // 个,十,百,千 循环                case 0:  //个数加单位,对零单独处理                    if($v == 0){                        $preIsZero = 1;                    } else {                        $_chinese = self::$basical[$v];                        $preIsZero = 0;                    }                    if($k == 8) {                        $_chinese .= '亿';                    } elseif ($k == 4){                        $_chinese .= '万';                    }                    break;                  default:                    if($v == 0) {                        if($preIsZero == 0){                            $_chinese=self::$basical[$v];                            $preIsZero = 1;                        }                    } else {                        $_chinese = self::$basical[$v];                        $_chinese .= self::$advanced[$x];                        $preIsZero = 0;                    }                    break;            }            $data = $_chinese.$data;        }        return $data.'元';    }    public static function dec($number){        if(strlen($number)<2)             $number = str_pad($number, 2, '0');        $arr = array_reverse(str_split($number));        $data = '';        $preIsZero = 0;        foreach ($arr as $k => $v){            $_chinese = '';            if($k == 0){                if($v == 0){                    $preIsZero = 1;                } else {                    $_chinese = self::$basical[$v];                    $_chinese .= '分';                    $preIsZero = 0;                }            }else{                if($v == 0){                    if($preIsZero == 0){                        $_chinese = self::$basical[$v];                    }                }else{                    $_chinese = self::$basical[$v];                    $_chinese .= '角';                }            }            $data = $_chinese.$data;        }        return $data;    }}


0 0