1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <?php function numTrmb( $num ) { $d = array ( "零" , "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒" , "捌" , "玖" ); $e = array ( '元' , '拾' , '佰' , '仟' , '万' , '拾万' , '佰万' , '仟万' , '亿' , '拾亿' , '佰亿' , '仟亿' ); $p = array ( '分' , '角' ); $zheng = "整" ; $final = array (); $inwan = 0; //是否有万 $inyi = 0; //是否有亿 $len = 0; //小数点后的长度 $y = 0; $num = round ( $num , 2); //精确到分 if ( strlen ( $num ) > 15) { return "金额太大" ; die (); } if ( $c = strpos ( $num , '.' )) { //有小数点,$c为小数点前有几位 $len = strlen ( $num )- strpos ( $num , '.' )-1; //小数点后有几位数 } else { //无小数点 $c = strlen ( $num ); $zheng = '整' ; } for ( $i = 0; $i < $c ; $i ++) { $bit_num = substr ( $num , $i , 1); if ( $bit_num != 0 || substr ( $num , $i + 1, 1) != 0) { @ $low = $low . $d [ $bit_num ]; } if ( $bit_num || $i == $c - 1) { @ $low = $low . $e [ $c - $i - 1]; } } if ( $len !=1){ for ( $j = $len ; $j >= 1; $j --) { $point_num = substr ( $num , strlen ( $num ) - $j , 1); @ $low = $low . $d [ $point_num ] . $p [ $j - 1]; } } else { $point_num = substr ( $num , strlen ( $num ) - $len , 1); $low = $low . $d [ $point_num ]. $p [ $len ]; } $chinses = str_split ( $low , 3); //字符串转化为数组 for ( $x = count ( $chinses ) - 1; $x >= 0; $x --) { if ( $inwan == 0 && $chinses [ $x ] == $e [4]) { //过滤重复的万 $final [ $y ++] = $chinses [ $x ]; $inwan = 1; } if ( $inyi == 0 && $chinses [ $x ] == $e [8]) { //过滤重复的亿 $final [ $y ++] = $chinses [ $x ]; $inyi = 1; $inwan = 0; } if ( $chinses [ $x ] != $e [4] && $chinses [ $x ] !== $e [8]) { $final [ $y ++] = $chinses [ $x ]; } } $newstr = ( array_reverse ( $final )); $nstr = join( $newstr ); if (( substr ( $num , -2, 1) == '0' ) && ( substr ( $num , -1) <> 0)) { $nstr = substr ( $nstr , 0, ( strlen ( $nstr ) -6)). '零' . substr ( $nstr , -6, 6); } $nstr =( strpos ( $nstr , '零角' )) ? substr_replace( $nstr , "" , strpos ( $nstr , '零角' ),6) : $nstr ; return $nstr = ( substr ( $nstr ,-3,3)== '元' ) ? $nstr . $zheng : $nstr ; } echo numTrmb(556455456156.65); |