仕事上、人民元の金額、つまりアラビア数字を漢字の大文字に変換する必要がある場面に遭遇することがあります。 以下は、筆者が実践を通じてまとめた方法であり、メモ防止のためにここに記録します。 。
<p>class Num2Cny{</p> static $basical=array(0=>'零','壹','贰','叁','肆','伍','陆','柒','捌','玖');<br /> static $advanced=array(1=>'拾','佰','仟');<br /> public static function ParseNumber($number){<br /> $number=trim($number);<br /> if(!is_numeric($number)||intval($number)>999999999999) return 'error';<br /> if($number==0) return '零';<br /> if(strpos($number,'.')){<br /> $number=round($number,2);<br /> $data=explode('.',$number);<br /> $data[0]=self::int($data[0]);<br /> $data[1]=self::dec($data[1]);<br /> return $data[0].$data[1];<br /> }else{<br /> return self::int($number).'整';<br /> }<br /> }<br /> public static function int($number){<br /> $arr=array_reverse(str_split($number));<br /> $data='';<br /> $zero=false;<br /> $zero_num=0;<br /> foreach($arr as $k=>$v){<br /> $_chinese='';<br /> $zero=($v==0)?true:false;<br /> $x=$k%4;<br /> if($x && $zero && $zero_num>1)continue;<br /> switch($x){<br /> case 0:<br /> if($zero){<br /> $zero_num=0;<br /> }else{<br /> $_chinese=self::$basical[$v];<br /> $zero_num=1;<br /> }<br /> if($k==8){<br /> $_chinese.='亿';<br /> }elseif($k==4){<br /> $_chinese.='万';<br /> }<br /> break; <br /> default:<br /> if($zero){<br /> if($zero_num==1){<br /> $_chinese=self::$basical[$v];<br /> $zero_num++;<br /> }<br /> }else{<br /> $_chinese=self::$basical[$v];<br /> $_chinese.=self::$advanced[$x];<br /> }<br /> }<br /> $data=$_chinese.$data;<br /> }<br /> return $data.'元';<br /> }<br /> public static function dec($number){<br /> if(strlen($number)<2) $number.='0';<br /> $arr=array_reverse(str_split($number));<br /> $data='';<br /> $zero_num=false;<br /> foreach($arr as $k=>$v){<br /> $zero=($v==0)?true:false;<br /> $_chinese='';<br /> if($k==0){<br /> if(!$zero){<br /> $_chinese=self::$basical[$v];<br /> $_chinese.='分';<br /> $zero_num=true;<br /> }<br /> }else{<br /> if($zero){<br /> if($zero_num){<br /> $_chinese=self::$basical[$v];<br /> }<br /> }else{<br /> $_chinese=self::$basical[$v];<br /> $_chinese.='角';<br /> }<br /> }<br /> $data=$_chinese.$data;<br /> }<br /> return $data;<br /> }<br /><p>}
使用プロセスも次のように非常に簡単です:
echo Num2Cny::ParseNumber(1234567.5);//www.scutephp. com
結果は次のように出力されます:
百二十三千四千五百六万元五角
関連: JS の数値変換方法大文字の金額