function cny( $ns ) {
static $cnums = array ( "零" , "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒" ,
"捌" , "玖" ),
$cnyunits = array ( "圆" , "角" , "分" ),
$grees = array ( "拾" , "佰" , "仟" , "万" , "拾" , "佰" , "仟" , "亿" );
list( $ns1 , $ns2 )= explode ( "." , $ns ,2);
$ns2 = array_filter ( array ( $ns2 [1], $ns2 [0]));
$ret = array_merge ( $ns2 , array (implode( "" ,_cny_map_unit(str_spl
it( $ns
1), $grees )), "" ));
$ret =implode( "" , array_reverse (_cny_map_unit( $ret , $cnyunits )));
return str_replace ( array_keys ( $cnums ), $cnums , $ret );
}
function _cny_map_unit( $list , $units ) {
$ul = count ( $units );
$xs = array ();
foreach ( array_reverse ( $list ) as $x ) {
$l = count ( $xs );
if ( $x != "0" || !( $l %4)) $n =( $x == '0' ? '' : $x ).( $units [( $l -1)
% $ul ]);
else $n = is_numeric ( $xs [0][0])? $x : '' ;
array_unshift ( $xs , $n );
}
return $xs ;
}
|