阿拉伯数字转汉字
时间:2006-12-28
来源:互联网
PHP代码:
<?php
$basical=array("零","一","二","三","四","五","六","七","八","九");
//$basical=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
$advanced=array("十","百","千");
//$advanced=array("拾","佰","仟");
$top = array("","万","亿","万亿");
function levelfor($array){
global $basical,$advanced;
if($array[0]==0&&$array[1]==0&&$array[2]==0&&$array[3]!=0){
$result=$basical[0].$basical[$array[3]];
}elseif($array[0]==0&&$array[1]==0&&$array[2]!=0&&$array[3]==0){
$result=$basical[0].$basical[$array[2]].$advanced[0];
}elseif($array[0]==0&&$array[1]!=0&&$array[2]==0&&$array[3]==0){
$result=$basical[0].$basical[$array[1]].$advanced[1];
}elseif($array[0]!=0&&$array[1]==0&&$array[2]==0&&$array[3]==0){
$result=$basical[$array[0]].$advanced[2];
}elseif($array[0]!=0&&$array[1]!=0&&$array[2]==0&&$array[3]==0){
$result=$basical[$array[0]].$advanced[2].$basical[$array[1]].$advanced[1];
}elseif($array[0]!=0&&$array[1]==0&&$array[2]!=0&&$array[3]==0){
$result=$basical[$array[0]].$advanced[2].$basical[0].$basical[$array[2]].$advanced[0];
}elseif($array[0]!=0&&$array[1]==0&&$array[2]==0&&$array[3]!=0){
$result=$basical[$array[0]].$advanced[2].$basical[0].$basical[$array[3]];
}elseif($array[0]==0&&$array[1]!=0&&$array[2]==0&&$array[3]!=0){
$result=$basical[0].$basical[$array[1]].$advanced[1].$basical[0].$basical[$array[3]];
}elseif($array[0]==0&&$array[1]==0&&$array[2]!=0&&$array[3]!=0){
$result=$basical[0].$basical[$array[2]].$advanced[0].$basical[$array[3]];
}elseif($array[0]==0&&$array[1]!=0&&$array[2]!=0&&$array[3]==0){
$result=$basical[0].$basical[$array[1]].$advanced[1].$basical[$array[2]].$advanced[0];
}elseif($array[0]!=0&&$array[1]!=0&&$array[2]!=0&&$array[3]==0){
$result=$basical[$array[0]].$advanced[2].$basical[$array[1]].$advanced[1].$basical[$array[2]].$advanced[0];
}elseif($array[0]!=0&&$array[1]==0&&$array[2]!=0&&$array[3]!=0){
$result=$basical[$array[0]].$advanced[2].$basical[0].$basical[$array[2]].$advanced[0].$basical[$array[3]];
}elseif($array[0]!=0&&$array[1]!=0&&$array[2]==0&&$array[3]!=0){
$result=$basical[$array[0]].$advanced[2].$basical[$array[1]].$advanced[1].$basical[0].$basical[$array[3]];
}elseif($array[0]==0&&$array[1]!=0&&$array[2]!=0&&$array[3]!=0){
$result=$basical[0].$basical[$array[1]].$advanced[1].$basical[$array[2]].$advanced[0].$basical[$array[3]];
}elseif($array[0]==0&&$array[1]==0&&$array[2]==0&&$array[3]==0){
$result=$basical[0];
}else{
$result=$basical[$array[0]].$advanced[2].$basical[$array[1]].$advanced[1].$basical[$array[2]].$advanced[0].$basical[$array[3]];
}
return $result;
}
function levelthr($array){
global $basical,$advanced;
if($array[0]!=0&&$array[1]==0&&$array[2]==0){
$result=$basical[$array[0]].$advanced[1];
}elseif($array[0]!=0&&$array[1]!=0&&$array[2]==0){
$result=$basical[$array[0]].$advanced[1].$basical[$array[1]].$advanced[0];
}elseif($array[0]!=0&&$array[1]==0&&$array[2]!=0){
$result=$basical[$array[0]].$advanced[1].$basical[0].$basical[$array[2]];
}else{
$result=$basical[$array[0]].$advanced[1].$basical[$array[1]].$advanced[0].$basical[$array[2]];
}
return $result;
}
function leveltwo($array){
global $basical,$advanced;
if($array[1]==0){
$result=$basical[$array[0]].$advanced[0];
}else{
$result=$basical[$array[0]].$advanced[0].$basical[$array[1]];
}
return $result;
}
function turn($number){
global $basical,$advanced,$top;
$length =strlen($number);
if($length<=12){
$headerlen = $length%4;
for($i=0;$i < $headerlen;$i++){
$header[$i]=$number[$i];
}
$maincount = ($length-$length%4)/4;
$k=$headerlen;
for($i=0;$i < $maincount;$i++){
for($j=0;$j < 4;$j++){
$num_array[$i][$j]=$number[$k];
$k++;
}
}
if($headerlen==1){
$str .= $basical[$header[0]].$top[$maincount];
}elseif($headerlen==2){
$str .= leveltwo($header).$top[$maincount];
}elseif($headerlen==3){
$str .= levelthr($header).$top[$maincount];
}
for($i=0;$i < $maincount;$i++){
$step = levelfor($num_array[$i]);
if($step != $basical[0]){
$str .= $step.$top[$maincount-$i-1];
}else{
$str .= $step;
}
}
}else{
$str ="这个数字用汉字无法描述";
}
$str = str_replace($basical[0].$basical[0],$basical[0],$str);
if(substr($str,-2)==$basical[0]&&strlen($str)>2){
$str = substr($str,0,strlen($str)-2);
}
return $str;
}
echo turn("98000005498");
?>
作者: muqiao 发布时间: 2006-12-28
作者: muqiao 发布时间: 2006-12-28
八千九百四十八亿四千五百一十万六千四百五十
作者: muqiao 发布时间: 2006-12-28
八千零八亿零八十万零八百
作者: muqiao 发布时间: 2006-12-28
作者: thankwsx 发布时间: 2006-12-28
PHP代码:
<?php
// 进位转换,整数部分
function num2chn($num, $length = 4) {
$char = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
$div[1] = array("拾","佰","仟");
$div[4] = array("万","亿","万亿");
$digit = str_rsplit($num, $length);
$digit_count = count($digit) - 1;
for($i = $digit_count; $i >= 0; $i-- ){
if($length == 1) {
$chn .= $char[$digit[$i]] . ($digit[$i] != "0" ? $div[$length][$i-1] : "" );
}else{
$chn .= replace_zero(num2chn($digit[$i], 1)) . $div[$length][$i-1];
}
}
return $chn;
}
// 从右分割字符串
function str_rsplit($str, $length = 1) {
$str = strrev($str);
$ret = str_split($str, $length);
foreach ( $ret as &$str)
$str = strrev($str);
return $ret;
}
// 替换"零"
function replace_zero($char) {
$pattern = array("/(零)+$/", "/(零)+/");
$replacement = array("", "零");
return preg_replace($pattern, $replacement, $char);
}
echo num2chn(123456789);
?>
作者: hemon 发布时间: 2007-01-29
PHP代码:
<? php
//hemon [at] gmail.com 2007-1-3
function num2chn($num){
$char = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
$carry = array("分","角","圆","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万亿","拾","佰","仟");
$base = 2;
if(strpos($num, '.') > 0){
$base = 0;
$num = str_replace(".","", $num);
}
$length = strlen($num) - 1;
for($i = 0; $i <= $length; $i++){
$chn .= $char[$num{$i}] . $carry[$length - $i + $base];
}
// 替换“零”
$pattern = array("/(零)(仟|佰|拾)+/", "/(零)+/", "/(零)+(圆|万|亿|万亿)/","/(亿)+(亿|万)(零)?/");
$replacement = array("零","零","$2","亿零");
$chn = preg_replace($pattern, $replacement, $chn);
return $chn;
}
echo num2chn(1234567890);
?>
作者: hemon 发布时间: 2007-01-30
作者: Phzzy 发布时间: 2007-01-31
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28