最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php將金額數(shù)字轉(zhuǎn)化為中文大寫

 更新時間:2015年07月09日 11:27:55   投稿:hebedich  
本文給大家匯總介紹了幾種php將金額數(shù)字轉(zhuǎn)化為中文大寫的實用函數(shù),各有優(yōu)劣,小伙伴們根據(jù)自己的項目需求自由選擇吧。

php將金額數(shù)字轉(zhuǎn)化為中文大寫

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; 
 }

代碼二:

/**
*數(shù)字金額轉(zhuǎn)換成中文大寫金額的函數(shù)
*String Int $num 要轉(zhuǎn)換的小寫數(shù)字或小寫字符串
*return 大寫字母
*小數(shù)位為兩位
**/
function num_to_rmb($num){
    $c1 = "零壹貳叁肆伍陸柒捌玖";
    $c2 = "分角元拾佰仟萬拾佰仟億";
    //精確到分后面就不要了,所以只留兩個小數(shù)位
    $num = round($num, 2); 
    //將數(shù)字轉(zhuǎn)化為整數(shù)
    $num = $num * 100;
    if (strlen($num) > 10) {
        return "金額太大,請檢查";
    } 
    $i = 0;
    $c = "";
    while (1) {
        if ($i == 0) {
            //獲取最后一位數(shù)字
            $n = substr($num, strlen($num)-1, 1);
        } else {
            $n = $num % 10;
        }
        //每次將最后一位數(shù)字轉(zhuǎn)化為中文
        $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;
        //去掉數(shù)字最后一位了
        $num = $num / 10;
        $num = (int)$num;
        //結(jié)束循環(huán)
        if ($num == 0) {
            break;
        } 
    }
    $j = 0;
    $slen = strlen($c);
    while ($j < $slen) {
        //utf8一個漢字相當3個字符
        $m = substr($c, $j, 6);
        //處理數(shù)字中很多0的情況,每次循環(huán)去掉一個漢字“零”
        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
//先貼一個數(shù)字轉(zhuǎn)中文的,最多12位數(shù) 
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";

//補充一個中文轉(zhuǎn)數(shù)字的
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,"")去掉輸入當中不是數(shù)字和.的字符
  //replace(/(\.\d{2}).+$/,"$1") 
  //匹配從字符開始的第一個.后面的所有字符,由于沒有使用g標記,
  //所以只匹配開始第一次  然后用小數(shù)點和后兩位進行替換以確定數(shù)值最后的格式正確 高.
  //replace(/^0+([1-9])/,"$1") 匹配以多個0開頭的數(shù)值替換為去掉0后的數(shù)值做為數(shù)字的第一位 也是匹配開始的一次.
  //replace(/^0+$/,"0") 匹配以0開始和結(jié)束的多個0為一個0 也就是0000000 輸入->轉(zhuǎn)換成一個0
  //以下確定輸入的為過濾后的合法數(shù)字
  //alert(ms);
  var txt = ms.split(".");
  //alert(txt[0]);
  //如果ms值不小數(shù)點存在則txt[0]=小數(shù)點前的值否則等于ms
  //regexp:/\d{4}(,|$)/ 匹配四位數(shù)字和,的集合或者四位數(shù)字和字符結(jié)尾的集合
  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}(,|$))/ 將四個數(shù)字份為兩組第一個數(shù)字為第一位,后三位和其他結(jié)尾為每二位
  //并替換成 第一位,第二位 注意 ,的使用很好.  也就是將4123先替換成4,123
  //由于此表達式默認采用貪婪匹配所以從數(shù)值后向前匹配再通過循環(huán)進行再匹配替換從而可以將
  //12345678分成你想要的123,456,78 彩用(,|$)很精典,因為它略去了第二次匹配時的,問題
  t.value = stmp = txt[0]+(txt.length>1?"."+txt[1]:"");
  //最終賦值到輸入框中 
  //如果有小數(shù)點則加上并購成最終數(shù)字否則顯示替換后的txt[0]
  bbb.value = convertCurrency(ms-0);
  //將ms轉(zhuǎn)換為數(shù)字送到number2num1去轉(zhuǎn)換
}

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

相關(guān)文章

  • PHP簡單驗證碼功能機制實例詳解

    PHP簡單驗證碼功能機制實例詳解

    這篇文章主要介紹了PHP簡單驗證碼功能機制,結(jié)合實例形式深入淺出的分析了php驗證碼的原理、實現(xiàn)步驟及相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • PHP編程實現(xiàn)微信企業(yè)向用戶付款的方法示例

    PHP編程實現(xiàn)微信企業(yè)向用戶付款的方法示例

    這篇文章主要介紹了PHP編程實現(xiàn)微信企業(yè)向用戶付款的方法,涉及php針對微信接口調(diào)用、配置及交互操作相關(guān)技巧,需要的朋友可以參考下
    2017-07-07
  • php中通過curl檢測頁面是否被百度收錄

    php中通過curl檢測頁面是否被百度收錄

    最近要對網(wǎng)站做個整理,需要檢測網(wǎng)站內(nèi)哪些頁面沒有被百度搜索引擎收錄從而進行相關(guān)的調(diào)整。由于使用site命令一條條的去看實在是看不過來,就想到了使用php程序來批量處理一下
    2013-09-09
  • PHP調(diào)用Twitter的RSS的實現(xiàn)代碼

    PHP調(diào)用Twitter的RSS的實現(xiàn)代碼

    “守望軒”博客右側(cè)邊欄原來有個“雜感”的欄目,用來記錄短的、不能大篇幅成文的短句,或者自己比較喜歡的短句和言論。
    2010-03-03
  • Zend Framework上傳文件重命名的實現(xiàn)方法

    Zend Framework上傳文件重命名的實現(xiàn)方法

    這篇文章主要介紹了Zend Framework上傳文件重命名的實現(xiàn)方法,結(jié)合實例形式分析了Zend Framework上傳文件重命名的具體操作步驟與配置、檢測、重命名操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-11-11
  • PHP迭代器接口Iterator用法分析

    PHP迭代器接口Iterator用法分析

    這篇文章主要介紹了PHP迭代器接口Iterator用法,結(jié)合實例形式分析了PHP迭代器接口Iterator的概念、功能、定義與使用方法,需要的朋友可以參考下
    2017-12-12
  • php運行報錯Call to undefined function curl_init()的最新解決方法

    php運行報錯Call to undefined function curl_init()的最新解決方法

    其實在網(wǎng)上很早之前就出現(xiàn)過這個問題,網(wǎng)上百度了下,答案千篇一律,最近又遇到這個問題,但是百度出來的問題不能解決這個問題了,所以只能翻墻找答案,現(xiàn)在將解決的方法分享給大家,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • PHP隊列用法實例

    PHP隊列用法實例

    這篇文章主要介紹了PHP隊列用法,以實例形式詳細講述了PHP隊列的實現(xiàn)與各種常用的操作,非常具有參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • PHP如何讀取由JavaScript設(shè)置的Cookie

    PHP如何讀取由JavaScript設(shè)置的Cookie

    本文主要介紹了PHP讀取由JavaScript設(shè)置的Cookie的方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • PHP發(fā)送短信代碼分享

    PHP發(fā)送短信代碼分享

    最近要用php發(fā)送和接收短信,用戶訂單要用短信通知一類的功能,網(wǎng)上看了好多短信平臺感覺都不靠譜。也測試了很多代碼,下面把幾款好用的分享給大家
    2015-08-08

最新評論

湘潭市| 大理市| 日照市| 洮南市| 嘉峪关市| 儋州市| 无极县| 宁德市| 镇坪县| 成安县| 泊头市| 绩溪县| 石城县| 云梦县| 眉山市| 黄石市| 惠安县| 吴江市| 土默特右旗| 涡阳县| 盖州市| 石景山区| 漳平市| 义乌市| 睢宁县| 永春县| 赞皇县| 沂南县| 河曲县| 新和县| 海阳市| 陈巴尔虎旗| 淮南市| 扎鲁特旗| 乌海市| 南平市| 金昌市| 温州市| 玛曲县| 罗源县| 鹿邑县|