php小写金额转大写

来源:互联网 发布:asp网上购物系统源码 编辑:程序博客网 时间:2024/06/06 01:55
      public static function amountInWords($num) {


        if ( empty($num) || !is_numeric($num))
            return "";


        $return = "";
        $unit = array("分", "角", "圆", "整");
        $dw = array("", "拾", "佰", "仟", "", "万", "亿", "兆");
        $char = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
        preg_match_all("/(\d*)\.?(\d*)/", $num, $ar);


        if (intval($ar[2][0]) > 0) {
            $return .= $ar[2][0][0] == 0 ? "" : $char[$ar[2][0][0]] . $unit[1];
            if (isset($ar[2][0][1])) {
                if (empty($return) && $ar[1][0] > 0)
                    $return = $char[0] . $char[$ar[2][0][1]] . $unit[0];
                else
                    $return .= $char[$ar[2][0][1]] . $unit[0];
            }
        }else{
            $return .= $unit[3];
        }


        if ($ar[1][0] != "") {
            $str = strrev($ar[1][0]);
            $len = strlen($str);
            for ($i = 0; $i < $len; $i++) {
                $out[$i] = $char[$str[$i]];
                $out[$i] .= $str[$i] != "0"? $dw[$i%4] : "";
                if (($i-1 >= 0) && ($str[$i] + $str[$i-1] == 0))
                    $out[$i] = "";
                if ($i%4 == 0)
                    $out[$i] .= $dw[4+floor($i/4)];
                if ($out[$i] == "零万")
                    $out[$i] = "万零";
            }
            if ($out[0] == "零")
                unset($out[0]);
            $left = join("", array_reverse($out));
            if (!empty($left))
                $return = $left . $unit[2] . $return;
        }
        return $return;


    }
0 0