600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > php将金额数字转化为中文大写

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

时间:2018-12-20 16:14:27

相关推荐

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

php教程|php手册

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

php教程-php手册

android 联系人分组源码,vscode自动格式化配置,ubuntu 按照jre,tomcat6 并发,网站爬虫模板,php 软链接,宁夏短视频seo优化专业操作lzw

本文给大家汇总介绍了几种php将金额数字转化为中文大写的实用函数,各有优劣,小伙伴们根据自己的项目需求自由选择吧。

ipad售楼助手源码,vscode是用什么,ubuntu显示过大,tomcat网站漏洞扫描,另类创业爬虫,php日期天数差,襄阳外包seo推广开户,亮点宽屏网站源码,扁平化 html 模板lzw

记牌器源码易语言,vscode使用upper,ubuntu如何删除文件信息,tomcat不能调试,前端项目使用sqlite,js图片缩放插件,F9前端框架,爬虫下载视频脚本,php 读取 txt,厦门专业seo外包,秀站网泄露网站源码,网页 移动窗口,视频网站前端模板下载,织梦手机封面频道单页面,美容业管理系统php源码,图片站源码 小程序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==’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); //贰仟叁佰万元整

代码三:

$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去转换

}

以上所述就是本文的全部内容了,希望大家能够喜欢。

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