亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

php將金額數字轉化為中文大寫

2024-05-04 23:37:33
字體:
來源:轉載
供稿:網友

本文給大家匯總介紹了幾種php將金額數字轉化為中文大寫的實用函數,各有優劣,小伙伴們根據自己的項目需求自由選擇吧。

php將金額數字轉化為中文大寫

 

 
  1. echo toChineseNumber(1234567890);//壹拾貳億叁仟肆佰伍拾陸萬柒仟捌佰玖拾圓 
  2. function toChineseNumber($money){ 
  3. $money = round($money,2); 
  4. $cnynums = array("零","壹","貳","叁","肆","伍","陸","柒","捌","玖");  
  5. $cnyunits = array("圓","角","分"); 
  6. $cnygrees = array("拾","佰","仟","萬","拾","佰","仟","億");  
  7. list($int,$dec) = explode(".",$money,2); 
  8. $dec = array_filter(array($dec[1],$dec[0]));  
  9. $ret = array_merge($dec,array(implode("",cnyMapUnit(str_split($int),$cnygrees)),""));  
  10. $ret = implode("",array_reverse(cnyMapUnit($ret,$cnyunits)));  
  11. return str_replace(array_keys($cnynums),$cnynums,$ret);  
  12. function cnyMapUnit($list,$units) {  
  13. $ul=count($units);  
  14. $xs=array();  
  15. foreach (array_reverse($list) as $x) {  
  16. $l=count($xs);  
  17. if ($x!="0" || !($l%4))  
  18. $n=($x=='0'?'':$x).($units[($l-1)%$ul]);  
  19. else $n=is_numeric($xs[0][0])?$x:'';  
  20. array_unshift($xs,$n);  
  21. }  
  22. return $xs;  

代碼二:

 

 
  1. /** 
  2. *數字金額轉換成中文大寫金額的函數 
  3. *String Int $num 要轉換的小寫數字或小寫字符串 
  4. *return 大寫字母 
  5. *小數位為兩位 
  6. **/ 
  7. function num_to_rmb($num){ 
  8. $c1 = "零壹貳叁肆伍陸柒捌玖"
  9. $c2 = "分角元拾佰仟萬拾佰仟億"
  10. //精確到分后面就不要了,所以只留兩個小數位 
  11. $num = round($num, 2);  
  12. //將數字轉化為整數 
  13. $num = $num * 100; 
  14. if (strlen($num) > 10) { 
  15. return "金額太大,請檢查"
  16. }  
  17. $i = 0; 
  18. $c = ""
  19. while (1) { 
  20. if ($i == 0) { 
  21. //獲取最后一位數字 
  22. $n = substr($num, strlen($num)-1, 1); 
  23. else { 
  24. $n = $num % 10; 
  25. //每次將最后一位數字轉化為中文 
  26. $p1 = substr($c1, 3 * $n, 3); 
  27. $p2 = substr($c2, 3 * $i, 3); 
  28. if ($n != '0' || ($n == '0' && ($p2 == '億' || $p2 == '萬' || $p2 == '元'))) { 
  29. $c = $p1 . $p2 . $c; 
  30. else { 
  31. $c = $p1 . $c; 
  32. $i = $i + 1; 
  33. //去掉數字最后一位了 
  34. $num = $num / 10; 
  35. $num = (int)$num; 
  36. //結束循環 
  37. if ($num == 0) { 
  38. break
  39. }  
  40. $j = 0; 
  41. $slen = strlen($c); 
  42. while ($j < $slen) { 
  43. //utf8一個漢字相當3個字符 
  44. $m = substr($c, $j, 6); 
  45. //處理數字中很多0的情況,每次循環去掉一個漢字“零” 
  46. if ($m == '零元' || $m == '零萬' || $m == '零億' || $m == '零零') { 
  47. $left = substr($c, 0, $j); 
  48. $right = substr($c, $j + 3); 
  49. $c = $left . $right; 
  50. $j = $j-3; 
  51. $slen = $slen-3; 
  52. }  
  53. $j = $j + 3; 
  54. }  
  55. //這個是為了去掉類似23.0中最后一個“零”字 
  56. if (substr($c, strlen($c)-3, 3) == '零') { 
  57. $c = substr($c, 0, strlen($c)-3); 
  58. //將處理的漢字加上“整” 
  59. if (empty($c)) { 
  60. return "零元整"
  61. }else
  62. return $c . "整"
  63. echo num_to_rmb(23000000.00); //貳仟叁佰萬元整 

代碼三:

 

 
  1. <?php 
  2. //先貼一個數字轉中文的,最多12位數  
  3. function convert_2_cn($num) { 
  4. $convert_cn = array("零","壹","貳","叁","肆","伍","陸","柒","捌","玖"); 
  5. $repair_number = array('零仟零佰零拾零','萬萬','零仟','零佰','零拾'); 
  6. $unit_cn = array("拾","佰","仟","萬","億"); 
  7. $exp_cn = array("","萬","億"); 
  8. $max_len = 12; 
  9.  
  10. $len = strlen($num); 
  11. if($len > $max_len) { 
  12. return 'outnumber'
  13. $num = str_pad($num,12,'-',STR_PAD_LEFT); 
  14. $exp_num = array(); 
  15. $k = 0; 
  16. for($i=12;$i>0;$i--){ 
  17. if($i%4 == 0) { 
  18. $k++; 
  19. $exp_num[$k][] = substr($num,$i-1,1); 
  20. $str = ''
  21. foreach($exp_num as $key=>$nums) { 
  22. if(array_sum($nums)){ 
  23. $str = array_shift($exp_cn) . $str; 
  24. foreach($nums as $nk=>$nv) { 
  25. if($nv == '-'){continue;} 
  26. if($nk == 0) { 
  27. $str = $convert_cn[$nv] . $str; 
  28. else { 
  29. $str = $convert_cn[$nv].$unit_cn[$nk-1] . $str; 
  30. $str = str_replace($repair_number,array('萬','億','-'),$str); 
  31. $str = preg_replace("/-{2,}/","",$str); 
  32. $str = str_replace(array('零','-'),array('','零'),$str); 
  33. return $str; 
  34. echo convert_2_cn(1111)."/n"
  35. echo convert_2_cn(111111)."/n"
  36. echo convert_2_cn(111111111111)."/n"
  37.  
  38. //補充一個中文轉數字的 
  39. function cn_2_num($str){ 
  40. $convert_cn = array("零","壹","貳","叁","肆","伍","陸","柒","捌","玖"); 
  41. $skip_words = array("拾","佰","仟"); 
  42. $str = str_replace($skip_words,"",$str); 
  43. $len = mb_strlen($str,'utf-8'); 
  44. $num = 0; 
  45. $k = ''
  46. for($i=0;$i<$len;$i++) { 
  47. $cn = mb_substr($str,$i,1,'utf-8'); 
  48. if($cn == '億') { 
  49. $num = $num + intval($k)*100000000; 
  50. $k = ''
  51. } elseif($cn == '萬') { 
  52. $num = $num + intval($k)*10000; 
  53. $k = ''
  54. else { 
  55. $k = $k . array_search($cn,$convert_cn); 
  56. if($k) { 
  57. $num = $num + intval($k); 
  58. }  
  59. return $num;  
  60. }  
  61. echo cn_2_num('壹仟壹佰壹拾壹億壹仟壹佰壹拾壹萬壹仟壹佰壹拾壹')."/n";  
  62. echo cn_2_num('拾壹萬壹仟壹佰壹拾壹')."/n";  
  63. ?> 

代碼四:

 

 
  1. function convertCurrency(currencyDigits) { 
  2. // Constants: 
  3. var MAXIMUM_NUMBER = 99999999999.99; 
  4. // Predefine the radix characters and currency symbols for output: 
  5. var CN_ZERO = "零"
  6. var CN_ONE = "壹"
  7. var CN_TWO = "貳"
  8. var CN_THREE = "叁"
  9. var CN_FOUR = "肆"
  10. var CN_FIVE = "伍"
  11. var CN_SIX = "陸"
  12. var CN_SEVEN = "柒"
  13. var CN_EIGHT = "捌"
  14. var CN_NINE = "玖"
  15. var CN_TEN = "拾"
  16. var CN_HUNDRED = "佰"
  17. var CN_THOUSAND = "仟"
  18. var CN_TEN_THOUSAND = "萬"
  19. var CN_HUNDRED_MILLION = "億"
  20. var CN_SYMBOL = "人民幣"
  21. var CN_DOLLAR = "元"
  22. var CN_TEN_CENT = "角"
  23. var CN_CENT = "分"
  24. var CN_INTEGER = "整"
  25. // Variables: 
  26. var integral; // Represent integral part of digit number.  
  27. var decimal; // Represent decimal part of digit number. 
  28. var outputCharacters; // The output result. 
  29. var parts; 
  30. var digits, radices, bigRadices, decimals; 
  31. var zeroCount; 
  32. var i, p, d; 
  33. var quotient, modulus; 
  34. // Validate input string: 
  35. currencyDigits = currencyDigits.toString(); 
  36. if (currencyDigits == "") { 
  37. alert("Empty input!"); 
  38. return ""
  39. if (currencyDigits.match(/[^,./d]/) != null) { 
  40. alert("Invalid characters in the input string!"); 
  41. return ""
  42. if ((currencyDigits).match(/^((/d{1,3}(,/d{3})*(.((/d{3},)*/d{1,3}))?)|(/d+(./d+)?))$/) == null) { 
  43. alert("Illegal format of digit number!"); 
  44. return ""
  45. // Normalize the format of input digits: 
  46. currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters. 
  47. currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.  
  48. // Assert the number is not greater than the maximum number. 
  49. if (Number(currencyDigits) > MAXIMUM_NUMBER) { 
  50. alert("Too large a number to convert!"); 
  51. return ""
  52. // http://www.knowsky.com/ Process the coversion from currency digits to characters: 
  53. // Separate integral and decimal parts before processing coversion: 
  54. parts = currencyDigits.split("."); 
  55. if (parts.length > 1) { 
  56. integral = parts[0]; 
  57. decimal = parts[1]; 
  58. // Cut down redundant decimal digits that are after the second. 
  59. decimal = decimal.substr(0, 2); 
  60. else { 
  61. integral = parts[0]; 
  62. decimal = ""
  63. // Prepare the characters corresponding to the digits: 
  64. digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT,CN_NINE); 
  65. radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND); 
  66. bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION); 
  67. decimals = new Array(CN_TEN_CENT, CN_CENT); 
  68. // Start processing: 
  69. outputCharacters = ""
  70. // Process integral part if it is larger than 0: 
  71. if (Number(integral) > 0) { 
  72. zeroCount = 0; 
  73. for (i = 0; i < integral.length; i++) { 
  74. p = integral.length - i - 1; 
  75. d = integral.substr(i, 1); 
  76. quotient = p / 4; 
  77. modulus = p % 4; 
  78. if (d == "0") { 
  79. zeroCount++; 
  80. else { 
  81. if (zeroCount > 0) 
  82. outputCharacters += digits[0]; 
  83. zeroCount = 0; 
  84. outputCharacters += digits[Number(d)] + radices[modulus]; 
  85. if (modulus == 0 && zeroCount < 4) {  
  86. outputCharacters += bigRadices[quotient]; 
  87. outputCharacters += CN_DOLLAR; 
  88. // Process decimal part if there is: 
  89. if (decimal != "") { 
  90. for (i = 0; i < decimal.length; i++) { 
  91. d = decimal.substr(i, 1); 
  92. if (d != "0") { 
  93. outputCharacters += digits[Number(d)] + decimals[i]; 
  94. // Confirm and return the final output string: 
  95. if (outputCharacters == "") { 
  96. outputCharacters = CN_ZERO + CN_DOLLAR; 
  97. if (decimal == "") { 
  98. outputCharacters += CN_INTEGER; 
  99. //outputCharacters = CN_SYMBOL + outputCharacters; 
  100. outputCharacters = outputCharacters; 
  101. return outputCharacters; 
  102. }//  
  103. var stmp = ""
  104. function nst_convert(t) 
  105. if(t.value==stmp) return;//如果等于上次輸入則返回 
  106. var ms = t.value.replace(/[^/d/.]/g,"").replace(/(/./d{2}).+$/,"$1").replace(/^0+([1-9])/,"$1").replace(/^0+$/,"0"); 
  107. //replace(/[^/d/.]/g,"")去掉輸入當中不是數字和.的字符 
  108. //replace(/(/./d{2}).+$/,"$1")  
  109. //匹配從字符開始的第一個.后面的所有字符,由于沒有使用g標記, 
  110. //所以只匹配開始第一次 然后用小數點和后兩位進行替換以確定數值最后的格式正確 高. 
  111. //replace(/^0+([1-9])/,"$1") 匹配以多個0開頭的數值替換為去掉0后的數值做為數字的第一位 也是匹配開始的一次. 
  112. //replace(/^0+$/,"0") 匹配以0開始和結束的多個0為一個0 也就是0000000 輸入->轉換成一個0 
  113. //以下確定輸入的為過濾后的合法數字 
  114. //alert(ms); 
  115. var txt = ms.split("."); 
  116. //alert(txt[0]); 
  117. //如果ms值不小數點存在則txt[0]=小數點前的值否則等于ms 
  118. //regexp://d{4}(,|$)/ 匹配四位數字和,的集合或者四位數字和字符結尾的集合 
  119. while(//d{4}(,|$)/.test(txt[0]))//如果為txt[0]=4123 
  120. txt[0] = txt[0].replace(/(/d)(/d{3}(,|$))/,"$1,$2"); 
  121. //txt[0].replace(/(/d)(/d{3}(,|$))/,"$1,$2")是將txt[0]進行替換后再賦給它 
  122. //regexp:/(/d)(/d{3}(,|$))/ 將四個數字份為兩組第一個數字為第一位,后三位和其他結尾為每二位 
  123. //并替換成 第一位,第二位 注意 ,的使用很好. 也就是將4123先替換成4,123 
  124. //由于此表達式默認采用貪婪匹配所以從數值后向前匹配再通過循環進行再匹配替換從而可以將 
  125. //12345678分成你想要的123,456,78 彩用(,|$)很精典,因為它略去了第二次匹配時的,問題 
  126. t.value = stmp = txt[0]+(txt.length>1?"."+txt[1]:""); 
  127. //最終賦值到輸入框中  
  128. //如果有小數點則加上并購成最終數字否則顯示替換后的txt[0] 
  129. bbb.value = convertCurrency(ms-0); 
  130. //將ms轉換為數字送到number2num1去轉換 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩av综合精品| 国产日韩精品视频| 中文字幕成人在线| 日韩欧美精品在线观看| 国产亚洲美女精品久久久| 日韩在线视频观看正片免费网站| 日韩成人网免费视频| 清纯唯美日韩制服另类| 日韩中文综合网| 久久精品视频在线| 日韩在线免费观看视频| 久久综合伊人77777尤物| 日本高清久久天堂| 成人激情电影一区二区| 亚洲深夜福利在线| 欧美黑人视频一区| 久久精品小视频| 国产91热爆ts人妖在线| 亚洲电影免费观看高清完整版在线| 操日韩av在线电影| 最新国产精品亚洲| 国产精品美女免费视频| 欧美—级高清免费播放| 91wwwcom在线观看| 久久精品小视频| 中文字幕日韩免费视频| 欧美极品在线视频| 久久激情视频久久| 亚洲综合中文字幕在线观看| 色噜噜亚洲精品中文字幕| 欧美另类在线观看| 91网站在线免费观看| 中文字幕在线视频日韩| 日韩视频中文字幕| 日韩在线播放视频| 亚洲欧美日韩成人| 欧美一区亚洲一区| 亚洲人成网站777色婷婷| 亚洲国产小视频| 日韩成人av一区| 欧美一区二区影院| 国产精品jvid在线观看蜜臀| 在线免费观看羞羞视频一区二区| 国产精品爱啪在线线免费观看| 欧美性猛交xxxx乱大交极品| 精品成人69xx.xyz| 欧美劲爆第一页| 国产精品成人国产乱一区| 成人日韩av在线| 久久久久久免费精品| 超碰日本道色综合久久综合| 91精品久久久久久久久久久久久| 欧美最近摘花xxxx摘花| 欧美性高跟鞋xxxxhd| 亚洲性日韩精品一区二区| 日韩欧美国产黄色| 亚洲精品国产综合区久久久久久久| 欧美日韩国产成人在线观看| 久久久久久久成人| 欧美日韩中文字幕| 国产精品v片在线观看不卡| 亚洲成人av资源网| 不卡av电影在线观看| 秋霞午夜一区二区| 国产一区二区三区在线| 欧美国产视频日韩| 中文字幕一区二区三区电影| 国产精品美女主播在线观看纯欲| 美女啪啪无遮挡免费久久网站| 国产精品免费一区| 国产区亚洲区欧美区| 欧美成人精品一区二区| 国产精品va在线播放我和闺蜜| 日韩经典一区二区三区| 欧美最猛性xxxx| 97色在线播放视频| 国产精品高清在线观看| 色婷婷综合久久久久| 久久久久99精品久久久久| 日本欧美国产在线| 欧美老女人bb| 欧美日韩国产限制| 国产一区二区丝袜高跟鞋图片| 日本久久久久久久久久久| 国产精品成av人在线视午夜片| 北条麻妃一区二区三区中文字幕| 欧美日韩亚洲精品一区二区三区| 91成人天堂久久成人| 欧美精品情趣视频| 米奇精品一区二区三区在线观看| 色偷偷av亚洲男人的天堂| 91精品国产色综合久久不卡98| 国产精品久久久久秋霞鲁丝| 久久久久久国产精品久久| 久久手机免费视频| 精品国产乱码久久久久久婷婷| 欧美色播在线播放| 色婷婷综合成人av| 久久久国产一区二区三区| 亲子乱一区二区三区电影| 精品久久久久久久久久| 91久久精品美女高潮| 国产美女扒开尿口久久久| 欧美成人免费一级人片100| 法国裸体一区二区| 亚洲www在线| 亚洲有声小说3d| 亚洲精品美女久久久久| 海角国产乱辈乱精品视频| 亚洲国产精品成人av| 国产精品一区二区三区在线播放| 国产成人精品999| 日韩av免费在线观看| 欧美激情精品久久久| 久久全国免费视频| 国产成人在线播放| 欧美日韩加勒比精品一区| 国内偷自视频区视频综合| 欧美激情一级精品国产| 九九久久精品一区| 国产香蕉精品视频一区二区三区| 91久久精品美女高潮| 欧美一乱一性一交一视频| 2023亚洲男人天堂| 国产成人a亚洲精品| 亚洲成色777777在线观看影院| 91在线|亚洲| 中文字幕国产亚洲2019| 欧美激情视频在线免费观看 欧美视频免费一| 97免费在线视频| 亚洲国产精品va在线看黑人| 欧美日韩性生活视频| 91午夜在线播放| 亚洲国产女人aaa毛片在线| 中文字幕国产精品| 国产精品日韩一区| 岛国av在线不卡| 欧美激情精品久久久久| 亚洲xxxx18| 成人激情视频在线| 亚洲美女在线视频| 亚洲欧洲一区二区三区在线观看| 欧美乱妇40p| 亚洲男人天堂2019| 91免费人成网站在线观看18| 亚洲一区二区久久久久久| 成人黄色大片在线免费观看| 精品久久久久久久久国产字幕| 久久久久久国产精品三级玉女聊斋| 日韩精品免费综合视频在线播放| 午夜剧场成人观在线视频免费观看| 日韩美女视频在线观看| 777777777亚洲妇女| 亚洲激情自拍图| 97高清免费视频| 欧美视频第一页| 国产婷婷97碰碰久久人人蜜臀| 中国日韩欧美久久久久久久久| 亚洲福利在线视频| 日本精品在线视频| 播播国产欧美激情| 久久国产精品久久久久久久久久| 亚洲女同性videos| 国产精品久久久久久久久久东京|