国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

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

2020-03-22 19:45:19
字體:
來源:轉載
供稿:網友
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=='0' '':$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 != '0' || ($n == '0' && ($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); //貳仟叁佰萬元整代碼三://先貼一個數字轉中文的,最多12位數 function convert_2_cn($num) {$convert_cn = array("零","壹","貳","叁","肆","伍","陸","柒","捌","玖");$repair_number = array('零仟零佰零拾零','萬萬','零仟','零佰','零拾');$unit_cn = array("拾","佰","仟","萬","億");$exp_cn = array("","萬","億");$max_len = 12;$len = strlen($num);if($len $max_len) {return 'outnumber';$num = str_pad($num,12,'-',STR_PAD_LEFT);$exp_num = array();$k = 0;for($i=12;$i $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 $len;$i++) {$cn = mb_substr($str,$i,1,'utf-8');if($cn == '億') {$num = $num + intval($k)*100000000;$k = '';} elseif($cn == '萬') {$num = $num + intval($k)*10000;$k = '';} else {$k = $k . array_search($cn,$convert_cn);if($k) {$num = $num + intval($k);return $num; echo cn_2_num('壹仟壹佰壹拾壹億壹仟壹佰壹拾壹萬壹仟壹佰壹拾壹')."/n"; echo cn_2_num('拾壹萬壹仟壹佰壹拾壹')."/n"; 代碼四: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 "";// http://www.knowsky.com/ 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 integral.length; i++) { p = integral.length - i - 1; d = integral.substr(i, 1); quotient = p / 4; modulus = p % 4; if (d == "0") { zeroCount++; else { if (zeroCount 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 decimal.length; i++) { d = decimal.substr(i, 1); if (d != "0") { outputCharacters += digits[Number(d)] + decimals[i];// Confirm and return the final output string:if (outputCharacters == "") { outputCharacters = CN_ZERO + CN_DOLLAR;if (decimal == "") { outputCharacters += CN_INTEGER;//outputCharacters = CN_SYMBOL + outputCharacters;outputCharacters = outputCharacters;return outputCharacters;var stmp = "";function nst_convert(t) if(t.html' target='_blank'>value==stmp) return;//如果等于上次輸入則返回 var ms = t.value.replace(/[^/d/.]/g,"").replace(/(/./d{2}).+$/,"$1").replace(/^0+([1-9])/,"$1").replace(/^0+$/,"0"); //replace(/[^/d/.]/g,"")去掉輸入當中不是數字和.的字符 //replace(/(/./d{2}).+$/,"$1") //匹配從字符開始的第一個.后面的所有字符,由于沒有使用g標記, //所以只匹配開始第一次 然后用小數點和后兩位進行替換以確定數值最后的格式正確 高. //replace(/^0+([1-9])/,"$1") 匹配以多個0開頭的數值替換為去掉0后的數值做為數字的第一位 也是匹配開始的一次. //replace(/^0+$/,"0") 匹配以0開始和結束的多個0為一個0 也就是0000000 輸入- 轉換成一個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教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 恩平市| 卢湾区| 收藏| 古丈县| 哈尔滨市| 永春县| 潞城市| 京山县| 山阴县| 辰溪县| 凤庆县| 肥乡县| 东乌珠穆沁旗| 武平县| 赤城县| 石嘴山市| 阜平县| 荣昌县| 绥化市| 宜兰县| 夹江县| 天门市| 津南区| 韶关市| 木兰县| 泸州市| 高台县| 开原市| 建阳市| 炎陵县| 凯里市| 西乡县| 德钦县| 开江县| 靖江市| 屏山县| 毕节市| 定兴县| 玛沁县| 清河县| 香港 |