PHP简单实现:阿拉伯数字->汉字
May 07
数字转汉字(只支持整数),这种需求遇到的时候不多,但,我还是遇到了
闲话不多说,直接上代码:
<?php
/*
数字转汉字
如:123 转为 一百二十三
*/
function num2str($num) {
if(!is_numeric($num)) return false;
$ret = '';
if($num < 0) {
$ret = '负';
$num = -$num;
}
$zhNumArray = array(
"1" => "一",
"2" => "二",
"3" => "三",
"4" => "四",
"5" => "五",
"6" => "六",
"7" => "七",
"8" => "八",
"9" => "九",
"0" => "零",
);
$bitStrArray = array(
"1" => "",
"10" => "十",
"100" => "百",
"1000" => "千",
"10000" => "万",
"100000000" => "亿",
);
$prebit = 0;//上次记录的位数
krsort($bitStrArray);
foreach($bitStrArray as $bit => $name) {
$bit = floatval($bit);
if($num >= $bit) {
$tmpNum = floor($num / $bit);
if($tmpNum >= 10) {
$tmpRet = num2str($tmpNum);
$ret .= $tmpRet . $name;
} else {
if($prebit/$bit > 10) {//按照中文习惯补零
$ret .= '0';
}
$ret .= $tmpNum . $name;
}
$prebit = $bit;
$num = fmod($num, $bit);//取模
}
}
$ret = str_replace(array_keys($zhNumArray), array_values($zhNumArray), $ret);
return $ret;
}
$test = '1234567890';
echo num2str($test);
?>
这段代码算不上优美,可读性还凑合,bug肯定会有(那还展示出来干嘛呀- -!)。但我还是幻想万一对人能有所帮助呢,或者引来某个迷路的高手指点一二,都算是件好事。
Recent Comments