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

首頁 > 網站 > 建站經驗 > 正文

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

2024-04-25 20:38:44
字體:
來源:轉載
供稿:網友

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=='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); //貳仟叁佰萬元整

代碼三:

<?php

//先貼一個數字轉中文的,最多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>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<$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.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去轉換

}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品小说在线| 亚洲欧美中文日韩在线v日本| 在线日韩欧美视频| 国产精品一区=区| 国产精品日韩久久久久| 亚洲精品成a人在线观看| 日韩欧美国产激情| 日韩中文字幕免费看| 美日韩精品免费视频| 日韩av色综合| 91精品国产免费久久久久久| 在线观看91久久久久久| 国产999在线观看| 欧美国产中文字幕| 一区二区三区四区在线观看视频| 最近2019中文免费高清视频观看www99| 亚洲天堂免费观看| 在线成人中文字幕| 亚洲国产精品视频在线观看| 中文字幕久精品免费视频| 日韩电影中文字幕| 精品国产区一区二区三区在线观看| 日本亚洲欧美三级| 草民午夜欧美限制a级福利片| 欧美精品亚州精品| 4444欧美成人kkkk| 色妞欧美日韩在线| 2019最新中文字幕| 2018中文字幕一区二区三区| 伊人久久大香线蕉av一区二区| 91夜夜揉人人捏人人添红杏| 伊人久久五月天| 亚洲在线www| 亚洲毛片在线免费观看| 日韩av第一页| 亚洲人成免费电影| 日韩av影视在线| 欧美国产日韩视频| 久久久久久成人| 国产精品美女在线观看| 日韩欧美在线播放| 黑人精品xxx一区一二区| 欧洲美女7788成人免费视频| 国产精品日韩在线| 中文字幕亚洲字幕| 国产精品高潮呻吟久久av黑人| 麻豆成人在线看| 日本亚洲欧洲色α| 成人国产亚洲精品a区天堂华泰| 91国产视频在线播放| 国产精品欧美亚洲777777| 欧美一级大片视频| 亚洲视频一区二区| 久久久久久久电影一区| 日韩av男人的天堂| 国产精品久久久久福利| 久久亚洲精品视频| 日韩成人久久久| 亚洲美女av在线| 国产精品网站视频| 午夜精品国产精品大乳美女| 久久久久久久久久国产精品| 精品国产欧美一区二区五十路| 日韩成人在线视频网站| 日韩欧美大尺度| 不卡伊人av在线播放| 久久这里有精品| 久久精品一区中文字幕| 亚洲欧洲日产国码av系列天堂| 欧美日韩国产影院| 亚洲自拍偷拍区| 91探花福利精品国产自产在线| 日韩成人在线免费观看| 国产日韩欧美夫妻视频在线观看| 亚洲欧美一区二区激情| 欧美日韩亚洲国产一区| 欧美成人免费大片| 欧美午夜激情小视频| 麻豆国产精品va在线观看不卡| 亚洲的天堂在线中文字幕| 日韩在线视频网站| 国产91在线播放| 国产精品扒开腿做爽爽爽的视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 全亚洲最色的网站在线观看| 亚洲a级在线播放观看| 福利视频一区二区| 日韩av在线免费观看| 综合网日日天干夜夜久久| 日韩美女在线观看| 秋霞午夜一区二区| 91热精品视频| 欧美精品在线观看| 国产一区在线播放| 色婷婷av一区二区三区久久| 精品久久久久国产| 2019精品视频| 日韩在线播放一区| 91丝袜美腿美女视频网站| 国产亚洲aⅴaaaaaa毛片| 国产成人精品免高潮费视频| 自拍偷拍免费精品| 色妞在线综合亚洲欧美| 国产精品日日做人人爱| 精品久久久av| 日韩精品亚洲视频| 久久久久久一区二区三区| 日本精品一区二区三区在线播放视频| 亚洲精品成人网| 国产精品久久久久久久9999| 色先锋资源久久综合5566| 欧美体内谢she精2性欧美| 日韩免费av片在线观看| 精品视频在线观看日韩| 亚洲资源在线看| 亚洲美女福利视频网站| 国产精品一区二区三区久久久| 日韩精品日韩在线观看| 亚洲女同精品视频| 欧美性xxxx极品hd满灌| 欧美日韩国产一区二区三区| 茄子视频成人在线| 亚洲欧美视频在线| 91沈先生作品| 国产精品福利无圣光在线一区| 欧洲午夜精品久久久| 久久久久久久爱| 在线观看日韩专区| 亚洲图片欧美日产| 成人一区二区电影| 国产一区二区三区在线看| 国产日韩在线免费| 亚洲自拍欧美色图| 色婷婷久久av| 日韩在线观看网址| 久久国产精品久久久久久久久久| 成人黄在线观看| 欧美中文在线视频| 亚洲第一福利视频| 国产欧美中文字幕| 国产z一区二区三区| 亚洲精品一区av在线播放| 国产99在线|中文| 成人h视频在线观看播放| 国产www精品| 欧美在线激情网| 欧美一区二区三区……| 欧美尺度大的性做爰视频| 欧美精品亚州精品| 欧美性猛交99久久久久99按摩| 成人自拍性视频| 国产精品扒开腿做爽爽爽男男| 久久久国产视频91| 亚洲激情国产精品| 91香蕉亚洲精品| 精品二区三区线观看| 欧美日韩中文字幕综合视频| 亚洲欧洲自拍偷拍| 国产亚洲精品成人av久久ww| 欧美极品在线播放| 日韩中文字幕免费看| 97色在线播放视频| 中文字幕亚洲无线码在线一区| 久久久亚洲福利精品午夜|