PHP数字汉字码转换(算法)

复制代码代码如下所示:
将多个汉字转换成一千二百一十个字符,如1210
$ = 842105580; /九位数
功能del0($num) / /去除数字段前面的0
{
返回。intval(美元数);
}
功能N2C(X元) / /数字单变量的汉字
{
arr_n美元=阵列(零
返回的arr_n { x美元};
}
功能num_r($ ABCD) / /读值(4位)
{
ARR =阵列(美元);
在数字汉字之后读取
$标志= 0;此位为零
flag_end美元= 1; / /是否到零结束
size_r美元= strlen($ ABCD);
为($我= 0;美元美元美元我<< size_r;i++)
{
ARR {我} =美元美元美元美元ABCD {我};
}
arrlen美元=计数($ ARR);
(J = 0;对美元美元美元,<< arrlen;j++)
{
CH = 2C(美元美元美元美元arrlen-1 ARR {,}); / /从提出汉字
回声$;

如果第一个为零,则为($ = 0$ = 0)。
$标志= 1; /这是零
一个字符数字符串
继续;
} elseif($ CH = =零){ / /如果不是第一个零。
继续;
}
$标志= 0;这个位置不是零
开关($ j){
案例0:$str = $ CH;flag_end = 0美元;断裂; / /第一(结束),在零结束
案例1:$ =十。
案例2:$ = 100 ;中断;第三
案例3:$ = 1000 ;中断;第四
}
}
如果($ flag_end = = 1) / /如果到零结束
{
mb_internal_encoding(UTF-8);
$str = mb_substr($str,0,mb_strlen($str)- 1); / /把零
}
返回$ STR;
}
功能num2ch($num) / /读整体转换
{
num_real美元= del0($num); / /删除以前的0
numlen美元= strlen($ num_real);
回声numlen =numlen美元。;
如果($ numlen > = 9) / /如果满九,阅读一百万
{
Y元= substr(num_real美元,9, 1);

wsbq美元= substr(num_real美元,8, 4);
gsbq美元= substr(num_real美元,4);
美元= num_r(del0($ gsbq));
B = num_r(del0美元(美元wsbq))。一万;
$c = num_r(del0(Y元))。1亿;
} elseif($ numlen = 5) / /如果大于或等于万
{
wsbq美元= substr(num_real美元,0美元,numlen-4);
gsbq美元= substr(num_real美元,4);
美元= num_r(del0($ gsbq));
B = num_r(del0美元(美元wsbq))。一万;
$;
} elseif($ numlen <= 4) / /如果小于或等于1000
{
gsbq美元= substr(num_real美元,至numlen);
美元= num_r(del0($ gsbq));
$;
$;
}
ch_num美元美元美元美元= C B;
返回的ch_num;
}
echo $民; / /数字
回声num2ch($num); / /汉字

回声num2ch(1240 );