1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php怎么将金额数字转化为中文大写

php怎么将金额数字转化为中文大写

时间:2021-02-10 18:18:52

相关推荐

php怎么将金额数字转化为中文大写

后端开发|php教程

php,金额数字转化为中文大写

后端开发-php教程

财经直播聊天系统 源码,ubuntu找不到dash,tomcat7控制台乱码,vba爬虫返回符号,传智播客php38期,seo助手免费lzw

o2o app 源码,vscode光标动画,ubuntu20更改启动界面,tomcat禁用rmi,qt里sqlite测试,jquery对话框插件,响应式前端框架中文,丽江爬虫技术报名,csdn php,seo 行业,导航网站主题模板,网页二维码生成器代码,dedecms模板 绿色,酒店小程序独立前后端lzw

php怎么将金额数字转化为中文大写?

java thread源码,ubuntu上的粘贴,tomcat9自启动,java爬虫 前景,php 连接mysql 时间,顺德seo搜索引擎优化怎么做lzw

php将金额数字转化为中文大写

代码一:

echo toChineseNumber(1234567890);//壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾圆function toChineseNumber($money){ $money = round($money,2); $cnynums = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"); $cnyunits = array("圆","角","分"); $cnygrees = array("拾","佰","仟","万","拾","佰","仟","亿"); list($int,$dec) = explode(".",$money,2); $dec = array_filter(array($dec[1],$dec[0])); $ret = array_merge($dec,array(implode("",cnyMapUnit(str_split($int),$cnygrees)),"")); $ret = implode("",array_reverse(cnyMapUnit($ret,$cnyunits))); return str_replace(array_keys($cnynums),$cnynums,$ret); }function cnyMapUnit($list,$units) { $ul=count($units); $xs=array(); foreach (array_reverse($list) as $x) {$l=count($xs);if ($x!="0" || !($l%4)) $n=($x==?\:$x).($units[($l-1)%$ul]);else $n=is_numeric($xs[0][0])?$x:\; array_unshift($xs,$n); } return $xs; }

代码二:

/***数字金额转换成中文大写金额的函数*String Int $num 要转换的小写数字或小写字符串*return 大写字母*小数位为两位**/function num_to_rmb($num){ $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰仟亿"; //精确到分后面就不要了,所以只留两个小数位 $num = round($num, 2);//将数字转化为整数 $num = $num * 100; if (strlen($num) > 10) { return "金额太大,请检查"; }$i = 0; $c = ""; while (1) { if ($i == 0) { //获取最后一位数字 $n = substr($num, strlen($num)-1, 1); } else { $n = $num % 10; } //每次将最后一位数字转化为中文 $p1 = substr($c1, 3 * $n, 3); $p2 = substr($c2, 3 * $i, 3); if ($n != || ($n == && ($p2 == 亿 || $p2 == 万 || $p2 == 元))) { $c = $p1 . $p2 . $c; } else { $c = $p1 . $c; } $i = $i + 1; //去掉数字最后一位了 $num = $num / 10; $num = (int)$num; //结束循环 if ($num == 0) { break; }} $j = 0; $slen = strlen($c); while ($j < $slen) { //utf8一个汉字相当3个字符 $m = substr($c, $j, 6); //处理数字中很多0的情况,每次循环去掉一个汉字“零” if ($m == 零元 || $m == 零万 || $m == 零亿 || $m == 零零) { $left = substr($c, 0, $j); $right = substr($c, $j + 3); $c = $left . $right; $j = $j-3; $slen = $slen-3; } $j = $j + 3; }//这个是为了去掉类似23.0中最后一个“零”字 if (substr($c, strlen($c)-3, 3) == 零) { $c = substr($c, 0, strlen($c)-3); } //将处理的汉字加上“整” if (empty($c)) { return "零元整"; }else{ return $c . "整"; }}

echo num_to_rmb(23000000.00); //贰仟叁佰万元整

代码三:

$max_len) {return outnumber;}$num = str_pad($num,12,-,STR_PAD_LEFT);$exp_num = array();$k = 0;for($i=12;$i>0;$i--){if($i%4 == 0) {$k++;}$exp_num[$k][] = substr($num,$i-1,1);}$str = \;foreach($exp_num as $key=>$nums) {if(array_sum($nums)){$str = array_shift($exp_cn) . $str;}foreach($nums as $nk=>$nv) {if($nv == -){continue;}if($nk == 0) {$str = $convert_cn[$nv] . $str;} else {$str = $convert_cn[$nv].$unit_cn[$nk-1] . $str;}}}$str = str_replace($repair_number,array(万,亿,-),$str);$str = preg_replace("/-{2,}/","",$str);$str = str_replace(array(零,-),array(\,零),$str);return $str;}echo convert_2_cn(1111)."\n";echo convert_2_cn(111111)."\n";echo convert_2_cn(111111111111)."\n";//补充一个中文转数字的function cn_2_num($str){$convert_cn = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");$skip_words = array("拾","佰","仟");$str = str_replace($skip_words,"",$str);$len = mb_strlen($str,utf-8);$num = 0;$k = \;for($i=0;$i

代码四:

function convertCurrency(currencyDigits) {// Constants:var MAXIMUM_NUMBER = 99999999999.99;// Predefine the radix characters and currency symbols for output:var CN_ZERO = "零";var CN_ONE = "壹";var CN_TWO = "贰";var CN_THREE = "叁";var CN_FOUR = "肆";var CN_FIVE = "伍";var CN_SIX = "陆";var CN_SEVEN = "柒";var CN_EIGHT = "捌";var CN_NINE = "玖";var CN_TEN = "拾";var CN_HUNDRED = "佰";var CN_THOUSAND = "仟";var CN_TEN_THOUSAND = "万";var CN_HUNDRED_MILLION = "亿";var CN_SYMBOL = "人民币";var CN_DOLLAR = "元";var CN_TEN_CENT = "角";var CN_CENT = "分";var CN_INTEGER = "整";// Variables:var integral; // Represent integral part of digit number. var decimal; // Represent decimal part of digit number.var outputCharacters; // The output result.var parts;var digits, radices, bigRadices, decimals;var zeroCount;var i, p, d;var quotient, modulus;// Validate input string:currencyDigits = currencyDigits.toString();if (currencyDigits == "") { alert("Empty input!"); return "";}if (currencyDigits.match(/[^,.\d]/) != null) { alert("Invalid characters in the input string!"); return "";}if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) { alert("Illegal format of digit number!"); return "";}// Normalize the format of input digits:currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning. // Assert the number is not greater than the maximum number.if (Number(currencyDigits) > MAXIMUM_NUMBER) { alert("Too large a number to convert!"); return "";}// / Process the coversion from currency digits to characters:// Separate integral and decimal parts before processing coversion:parts = currencyDigits.split(".");if (parts.length > 1) { integral = parts[0]; decimal = parts[1]; // Cut down redundant decimal digits that are after the second. decimal = decimal.substr(0, 2);}else { integral = parts[0]; decimal = "";}// Prepare the characters corresponding to the digits:digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT,CN_NINE);radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);decimals = new Array(CN_TEN_CENT, CN_CENT);// Start processing:outputCharacters = "";// Process integral part if it is larger than 0:if (Number(integral) > 0) { zeroCount = 0; for (i = 0; i 0) { outputCharacters += digits[0]; } zeroCount = 0; outputCharacters += digits[Number(d)] + radices[modulus]; } if (modulus == 0 && zeroCount < 4) { outputCharacters += bigRadices[quotient]; } } outputCharacters += CN_DOLLAR;}// Process decimal part if there is:if (decimal != "") { for (i = 0; i 转换成一个0 //以下确定输入的为过滤后的合法数字 //alert(ms); var txt = ms.split("."); //alert(txt[0]); //如果ms值不小数点存在则txt[0]=小数点前的值否则等于ms //regexp:/\d{4}(,|$)/ 匹配四位数字和,的集合或者四位数字和字符结尾的集合 while(/\d{4}(,|$)/.test(txt[0]))//如果为txt[0]=4123 txt[0] = txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2"); //txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2")是将txt[0]进行替换后再赋给它 //regexp:/(\d)(\d{3}(,|$))/ 将四个数字份为两组第一个数字为第一位,后三位和其他结尾为每二位 //并替换成 第一位,第二位 注意 ,的使用很好. 也就是将4123先替换成4,123 //由于此表达式默认采用贪婪匹配所以从数值后向前匹配再通过循环进行再匹配替换从而可以将 //12345678分成你想要的123,456,78 彩用(,|$)很精典,因为它略去了第二次匹配时的,问题 t.value = stmp = txt[0]+(txt.length>1?"."+txt[1]:""); //最终赋值到输入框中 //如果有小数点则加上并购成最终数字否则显示替换后的txt[0] bbb.value = convertCurrency(ms-0); //将ms转换为数字送到number2num1去转换}

更多相关知识,请访问PHP中文网!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。