求一个可以使得php数字小写转为大写的函数

要求是用PHP实现
实现功能如下:
1转为:一
11转为:十一
21转为:二十一
201转为:二百零一
1000转为:一千

手掌心
浏览 178回答 3
3回答

皈依舞

PHP把阿拉伯数字转换成中文,需要定义一个转换的算法:算法实例:<?php/将数字转换为汉字,比如1210转换为一千二百一十&nbsp;$num&nbsp;=&nbsp;"842105580";//九位数&nbsp;function&nbsp;del0($num)&nbsp;//去掉数字段前面的0&nbsp;{&nbsp;return&nbsp;"".intval($num);&nbsp;}&nbsp;function&nbsp;n2c($x)&nbsp;//单个数字变汉字&nbsp;{&nbsp;$arr_n&nbsp;=&nbsp;array("零","一","二","三","四","五","六","七","八","九","十");&nbsp;return&nbsp;$arr_n[$x];&nbsp;}&nbsp;function&nbsp;num_r($abcd)&nbsp;//读取数值(4位)&nbsp;{&nbsp;$arr=&nbsp;array();&nbsp;$str&nbsp;=&nbsp;"";&nbsp;//读取后的汉字数值&nbsp;$flag&nbsp;=&nbsp;0;&nbsp;//该位是否为零&nbsp;$flag_end&nbsp;=&nbsp;1;&nbsp;//是否以“零”结尾&nbsp;$size_r&nbsp;=&nbsp;strlen($abcd);&nbsp;for($i=0;&nbsp;$i<$size_r;&nbsp;$i++)&nbsp;{&nbsp;$arr[$i]&nbsp;=&nbsp;$abcd{$i};&nbsp;}&nbsp;$arrlen&nbsp;=&nbsp;count($arr);&nbsp;for($j=0;&nbsp;$j<$arrlen;&nbsp;$j++)&nbsp;{&nbsp;$ch&nbsp;=&nbsp;n2c($arr[$arrlen-1-$j]);&nbsp;//从后向前转汉字&nbsp;echo&nbsp;$ch;&nbsp;echo&nbsp;"";&nbsp;if($ch&nbsp;==&nbsp;"零"&nbsp;&&&nbsp;$flag&nbsp;==&nbsp;0){&nbsp;//如果是第一个零&nbsp;$flag&nbsp;=&nbsp;1;&nbsp;//该位为零&nbsp;$str&nbsp;=&nbsp;$ch.$str;&nbsp;//加入汉字数值字符串&nbsp;continue;&nbsp;}elseif($ch&nbsp;==&nbsp;"零"){&nbsp;//如果不是第一个零了&nbsp;continue;&nbsp;}&nbsp;$flag&nbsp;=&nbsp;0;&nbsp;//该位不是零&nbsp;switch($j)&nbsp;{&nbsp;case&nbsp;0:&nbsp;$str&nbsp;=&nbsp;$ch;&nbsp;$flag_end&nbsp;=&nbsp;0;&nbsp;break;&nbsp;//第一位(末尾),没有以“零”结尾&nbsp;case&nbsp;1:&nbsp;$str&nbsp;=&nbsp;$ch."十".$str;&nbsp;break;&nbsp;//第二位&nbsp;case&nbsp;2:&nbsp;$str&nbsp;=&nbsp;$ch."百".$str;&nbsp;break;&nbsp;//第三位&nbsp;case&nbsp;3:&nbsp;$str&nbsp;=&nbsp;$ch."千".$str;&nbsp;break;&nbsp;//第四位&nbsp;}&nbsp;}&nbsp;if($flag_end&nbsp;==&nbsp;1)&nbsp;//如果以“零”结尾&nbsp;{&nbsp;mb_internal_encoding("UTF-8");&nbsp;$str&nbsp;=&nbsp;mb_substr($str,&nbsp;0,&nbsp;mb_strlen($str)-1);&nbsp;//把“零”去掉&nbsp;}&nbsp;return&nbsp;$str;&nbsp;}&nbsp;function&nbsp;num2ch($num)&nbsp;//整体读取转换&nbsp;{&nbsp;$num_real&nbsp;=&nbsp;del0($num);//去掉前面的“0”&nbsp;$numlen&nbsp;=&nbsp;strlen($num_real);&nbsp;echo&nbsp;"numlen=".$numlen."";&nbsp;if($numlen&nbsp;>=&nbsp;9)//如果满九位,读取“亿”位&nbsp;{&nbsp;$y=substr($num_real,&nbsp;-9,&nbsp;1);&nbsp;//echo&nbsp;$y;&nbsp;$wsbq&nbsp;=&nbsp;substr($num_real,&nbsp;-8,&nbsp;4);&nbsp;$gsbq&nbsp;=&nbsp;substr($num_real,&nbsp;-4);&nbsp;$a&nbsp;=&nbsp;num_r(del0($gsbq));&nbsp;$b&nbsp;=&nbsp;num_r(del0($wsbq))."万";&nbsp;$c&nbsp;=&nbsp;num_r(del0($y))."亿";&nbsp;}elseif($numlen&nbsp;<=&nbsp;8&nbsp;&&&nbsp;$numlen&nbsp;>=&nbsp;5)&nbsp;//如果大于等于“万”&nbsp;{&nbsp;$wsbq&nbsp;=&nbsp;substr($num_real,&nbsp;0,&nbsp;$numlen-4);&nbsp;$gsbq&nbsp;=&nbsp;substr($num_real,&nbsp;-4);&nbsp;$a&nbsp;=&nbsp;num_r(del0($gsbq));&nbsp;$b&nbsp;=&nbsp;num_r(del0($wsbq))."万";&nbsp;$c="";&nbsp;}elseif($numlen&nbsp;<=&nbsp;4)&nbsp;//如果小于等于“千”&nbsp;{&nbsp;$gsbq&nbsp;=&nbsp;substr(&nbsp;$num_real,&nbsp;-$numlen);&nbsp;$a&nbsp;=&nbsp;num_r(del0($gsbq));&nbsp;$b="";&nbsp;$c="";&nbsp;}&nbsp;$ch_num&nbsp;=&nbsp;$c.$b.$a;&nbsp;return&nbsp;$ch_num;&nbsp;}&nbsp;echo&nbsp;$num."";&nbsp;//数字&nbsp;echo&nbsp;num2ch($num);&nbsp;//汉字&nbsp;echo&nbsp;"";&nbsp;echo&nbsp;num2ch("1240");&nbsp;?>

江户川乱折腾

人民币金额数字转中文大写,无聊也用PHP写了一段相同功能的代码:Php代码&nbsp;function cny($ns) {&nbsp;&nbsp;&nbsp;&nbsp; static $cnums=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $cnyunits=array("圆","角","分"),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $grees=array("拾","佰","仟","万","拾","佰","仟","亿");&nbsp;&nbsp;&nbsp;&nbsp; list($ns1,$ns2)=explode(".",$ns,2);&nbsp;&nbsp;&nbsp;&nbsp; $ns2=array_filter(array($ns2[1],$ns2[0]));&nbsp;&nbsp;&nbsp;&nbsp; $ret=array_merge($ns2,array(implode("",_cny_map_unit(str_split($ns1),$grees)),""));&nbsp;&nbsp;&nbsp;&nbsp; $ret=implode("",array_reverse(_cny_map_unit($ret,$cnyunits)));&nbsp;&nbsp;&nbsp;&nbsp; return str_replace(array_keys($cnums),$cnums,$ret);&nbsp;}&nbsp;function _cny_map_unit($list,$units) {&nbsp;&nbsp;&nbsp;&nbsp; $ul=count($units);&nbsp;&nbsp;&nbsp;&nbsp; $xs=array();&nbsp;&nbsp;&nbsp;&nbsp; foreach (array_reverse($list) as $x) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $l=count($xs);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($x!="0" || !($l%4)) $n=($x=='0'?'':$x).($units[($l-1)%$ul]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else $n=is_numeric($xs[0][0])?$x:'';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array_unshift($xs,$n);&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; return $xs;&nbsp;}

泛舟湖上清波郎朗

<?phpfunction exchange($number){$number=substr($number,0,2);$arr=array("零","一","二","三","四","五","六","七","八","九");if(strlen($number)==1){$result=$arr[$number];}else{if($number==10){$result="十";}else{if($number<20){$result="十";}else{$result=$arr[substr($number,0,1)]."十";}if(substr($number,1,1)!="0"){$result.=$arr[substr($number,1,1)];}}}return $result."<br>";}echo exchange(1);echo exchange(11);echo exchange(21);?>这个可以转换两位。
打开App,查看更多内容
随时随地看视频慕课网APP