博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php将小写金额改成大写,万亿以下应该都没问题
阅读量:6406 次
发布时间:2019-06-23

本文共 1123 字,大约阅读时间需要 3 分钟。

hot3.png

接收的项目有个需求要将小写金额改成大写,上个人也是在网上找的一个函数,有点小bug,我自己改了下,万亿以下应该不会有问题

function cny($ns) {    $ns = str_replace(",","",$ns);    static $cnums=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"),    $cnyunits=array("圆","角","分"),    $grees=array("拾","佰","仟","万","拾","佰","仟","亿");    list($ns1,$ns2)=explode(".",$ns,2);     $ns2=array_filter(array($ns2[1],$ns2[0]));    $ret=array_merge($ns2,array(implode("",_cny_map_unit(str_split($ns1),$grees)),""));    $ret=implode("",array_reverse(_cny_map_unit($ret,$cnyunits)));    $str = str_replace(array_keys($cnums),$cnums,$ret);    if(strpos($ns,".00"))    {        $str = $str."整";    }    return  $str;}function _cny_map_unit($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);    }    $xs=  preg_replace('/0{2,}/', '0', str_replace('亿万', '亿', $xs));//出现亿万替换为亿,连续出现多个0时,合并一个    return $xs;}

主要是上面两个函数,用的时候直接使用

echo cny('200000000');

转载于:https://my.oschina.net/731135090/blog/523536

你可能感兴趣的文章
使用crond构建linux定时任务及日志查看
查看>>
地图绘制初探——基于maptalks的2.5D地图绘制
查看>>
SpringBoot2.0之七 实现页面和后台代码的热部署
查看>>
Git 仓库大扫除
查看>>
设计模式-单例模式
查看>>
es6基础0x014:WeakMap
查看>>
九种 “姿势” 让你彻底解决跨域问题
查看>>
php中mysqli 处理查询结果集总结
查看>>
你不知道的JavaScript运算符
查看>>
小程序开发注意事项
查看>>
ECMAScript7规范中的instanceof操作符
查看>>
Hadoop HDFS原理分析
查看>>
【webpack4】基本配置和入门api
查看>>
Mac使用ssh公钥登录Linux
查看>>
【366天】跃迁之路——程序员高效学习方法论探索系列(实验阶段124-2018.02.06)...
查看>>
POJ3070-Fibonacci(矩阵快速幂)
查看>>
[vue插件]基于vue2.x的电商图片放大镜插件
查看>>
标准的组件结构
查看>>
vue——一个页面实现音乐播放器
查看>>
SVG 扬帆起航
查看>>