if (!function_exists('rmb_capital')) {/*** 金额转中文大写** @param  mixed  $amount* @return string*/function rmb_capital($amount){$capitalNumbers = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖',];$integerUnits = ['', '拾', '佰', '仟',];$placeUnits = ['', '万', '亿', '兆',];$decimalUnits = ['角', '分', '厘', '毫',];$result = [];$arr = explode('.', $amount);$integer = trim($arr[0] ?? '', '-');$decimal = $arr[1] ?? '';if (!((int) $decimal)) {$decimal = '';}// 转换整数部分// 从个位开始$integerNumbers = $integer ? array_reverse(str_split($integer)) : [];$last = null;foreach (array_chunk($integerNumbers, 4) as $chunkKey => $chunk) {if (!((int) implode('', $chunk))) {// 全是 0 则直接跳过continue;}array_unshift($result, $placeUnits[$chunkKey]);foreach ($chunk as $key => $number) {// 去除重复 零,以及第一位的 零,类似:1002、110if (!$number && (!$last || $key === 0)) {$last = $number;continue;}$last = $number;// 类似 1022,中间的 0 是不需要 佰 的if ($number) {array_unshift($result, $integerUnits[$key]);}array_unshift($result, $capitalNumbers[$number]);}}if (!$result) {array_push($result, $capitalNumbers[0]);}array_push($result, '圆');if (!$decimal) {array_push($result, '整');}// 转换小数位$decimalNumbers = $decimal ? str_split($decimal) : [];foreach ($decimalNumbers as $key => $number) {array_push($result, $capitalNumbers[$number]);array_push($result, $decimalUnits[$key]);}if (strpos((string) $amount, '-') === 0) {array_unshift($result, '负');}return '人民币' . implode('', $result);}}

函数不对参数是否为数字值做验证

简单测试了一下:

:人民币零圆整

dsfa:人民币零圆整

0:人民币零圆整

1:人民币壹圆整

12:人民币壹拾贰圆整

10:人民币壹拾圆整

102:人民币壹佰零贰圆整

110:人民币壹佰壹拾圆整

1002:人民币壹仟零贰圆整

1010:人民币壹仟零壹拾圆整

1022:人民币壹仟零贰拾贰圆整

100002:人民币壹拾万零贰圆整

1020345:人民币壹佰零贰万零叁佰肆拾伍圆整

100:人民币壹佰圆整

10000:人民币壹万圆整

-22342.432:人民币负贰万贰仟叁佰肆拾贰圆肆角叁分贰厘

0.34:人民币零圆叁角肆分

34.04:人民币叁拾肆圆零角肆分

34532:人民币叁万肆仟伍佰叁拾贰圆整

123456789:人民币壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆整

PHP实现数字金额轻松转成中文繁体大写相关推荐

  1. 将用户输入的金额转写成中文的大写数字 c++

    #include <iostream> #include <string> using namespace std; // 表示整数部分的标志 const int INT_ON ...

  2. js 数字金额大小写转换成中文大写

    function Arabia_to_Chinese(Num) {for(i=Num.length-1;i>=0;i--){Num = Num.replace(",",&qu ...

  3. js将阿拉伯数字转换成中文的大写数字

    js将阿拉伯数字转换成中文的大写数字 export const numberToChinese = (num) => {var AA = new Array("零", &qu ...

  4. js将阿拉伯数字翻译成中文的大写数字

    // 将阿拉伯数字翻译成中文的大写数字 export const numberToChinese = (num) => {     var AA = new Array("零" ...

  5. 如何将数字金额转成中文人民币大写

    直接给出代码,复制即用 public static String arabiaToChinese(String number){if(isBlank(number)){return "零&q ...

  6. js 将阿拉伯数字翻译成中文的大写数字

    export const numberToChinese = (num) => {var AA = new Array("零", "一", "二 ...

  7. 【C语言】小写数字金额转换成中文大写金额

    1. 更新说明 添加与 "零圆整" 等价的预先判断 (0 / 0. / 0.0 / 0.00 / . / .0 / .00) 修复了因使用函数 strdup 导致的内存泄漏 除去输 ...

  8. NumbericUtil工具类(实现数字及数字格式化的基本功能:精确的加减乘除法、金额数字转 成中文等。)

    package com.common;import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.Num ...

  9. oracle 字符串中数字转中文大写,金额钱数转中文大写

    oracle 中字符串保函数字和非数字,现将字符串中数字转成中文的大写 CREATE OR REPLACE FUNCTION TO_UPPER_CNY(YEAR_IN IN VARCHAR2)RETU ...

最新文章

  1. 汇编语言使用C库函数和Linux动态链接
  2. SDNU 1019.礼物(水题)
  3. RTSP服务器之————rtsp-server(轻量级RTSP / RTP流媒体服务器)
  4. Mvc系统学习9——Areas学习
  5. CSS快速学习4:浮动和盒模型
  6. mysql安装mac 压缩包_MySQL8.0安装详解(图文版)
  7. node.js学习-整理
  8. (day 45 - 中序遍历 ) 剑指 Offer 54. 二叉搜索树的第k大节点
  9. JMETER压力测试思维导图
  10. github客户端使用简易教程
  11. linux触摸屏两指缩放_Linux内核触摸屏驱动--多点触摸 【转】
  12. 控制台Tomcat Locahost log输出No Spring WebApplicationIn
  13. java表示自然数,将一个正整数表示为连续自然数的和
  14. IED 61850 总体建模原则
  15. 张雪峰:创业团队极速发展过程中的分分合合
  16. nginx 之 http 转 https (两种方式)
  17. 手把手教你:基于TensorFlow的语音识别系统
  18. 矩形障碍算例(附Fortran计算代码及MATLAB后处理代码)
  19. verilog设计简易正弦波信号发生器_信号发生器入门手册-白皮书 (上)
  20. php获取实时带宽,Golang 获取网卡时时带宽,可用于测速

热门文章

  1. linux aeon gcc,在rosettaCM中,一些操作所需要的linux命令
  2. 数据库中 date 类型 实体类对应可以是 String 类型
  3. DFC Session Management 白皮书
  4. 有时感觉自己很是虚伪
  5. UCK将私钥硬件化 是数字资产安全储存的又一次革新
  6. linux 计费服务器,腾讯云服务器的实例计费问题
  7. 百度搜索URL参数你知道多少
  8. java获取每周的周一到周日时间节点
  9. 全球及中国用于癌症治疗的新型药物输送系统行业研究及十四五规划分析报告
  10. oracle 权限问题9017,泛微OA 曝出WorkflowCenterTreeData接口注入漏洞(限oracle数据库)