php把字符串转换为大写_金额大小写顺序

php把字符串转换为大写_金额大小写顺序php金额大小写转换的方法:使用金额转换函数grees,代码为【$grees=array(“拾”,”佰”,”仟”,”万”,”拾”,”佰”,”仟”,”亿”);list($ns1,$ns2)=explode(“.”,$ns,2)】。php金额大小写转换的方法:早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下。金额转换的函数方法有很多,都很不错。不过这个是小崔刚工作的时候写的一个转换函…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

php金额大小写转换的方法:使用金额转换函数grees,代码为【$grees=array(“拾”,”佰”,”仟”,”万”,”拾”,”佰”,”仟”,”亿”);list($ns1,$ns2)=explode(“.”,$ns,2)】。

fa34b278c627b33aaac0546c0bc8a165.png

php金额大小写转换的方法:

早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下。金额转换的函数方法有很多,都很不错。不过这个是小崔刚工作的时候写的一个转换函数,多少还是有点纪念意义。如有问题请朋友们指出,谢谢啦!

废话不多说直接上代码:

function upper($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(“”,calu(str_split($ns1),$grees)),””));

$ret=implode(“”,array_reverse(calu($ret,$cnyunits)));

return str_replace(array_keys($cnums),$cnums,$ret);

}

function calu($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;

}

echo upper(‘12121’);

?>

以上是基础转换代码,在这个基础上进行二次改造:<?php

/**

* 转换大写金额

* $num 数字类型

*/

function inttod($num) {

//判断$num是否存在

if(!$num) return ‘零圆’;

//保留小数点后两位

$num = round($num, 2);

//将浮点转换为整数

$tem_num = $num * 100;

//判断数字长度

$tem_num_len = strlen($tem_num);

if($tem_num_len > 14) {

return ‘数字太大了吧,有这么大的金钱吗’;

}

//大写数字

$dint = array(‘零’, ‘壹’, ‘贰’, ‘叁’, ‘肆’, ‘伍’, ‘陆’, ‘柒’, ‘捌’, ‘玖’);

//大写金额单位

$danwei = array(‘仟’, ‘佰’, ‘拾’, ‘亿’, ‘仟’, ‘佰’, ‘拾’, ‘万’, ‘仟’, ‘佰’, ‘拾’, ‘圆’);

$danwei1 = array(‘角’, ‘分’);

//空的变量用来保存转换字符串

$daxie = ”;

//分割数字,区分圆角分

list($left_num, $right_num) = explode(‘.’, $num);

//计算单位长度

$danwei_len = count($danwei);

//计算分割后的字符串长度

$left_num_len = strlen($left_num);

$right_num_len = strlen($right_num);

//循环计算亿万元等

for($i = 0; $i < $left_num_len; $i++) {

//循环单个文字

$key_ = substr($left_num, $i, 1);

//判断数字不等于0或数字等于0与金额单位为亿、万、圆,就返回完整单位的字符串

if($key_ !== ‘0’ || ($key_ == ‘0’ && ($danwei[$danwei_len – $left_num_len + $i] == ‘亿’ || $danwei[$danwei_len – $left_num_len + $i] == ‘万’ || $danwei[$danwei_len – $left_num_len + $i] == ‘圆’))) {

$daxie = $daxie . $dint[$key_] . $danwei[$danwei_len – $left_num_len + $i];

} else {

//否则就不含单位

$daxie = $daxie . $dint[$key_];

}

}

//循环计算角分

for($i = 0; $i < $right_num_len; $i++) {

$key_ = substr($right_num, $i, 1);

if($key_ > 0) {

$daxie = $daxie . $dint[$key_] . $danwei1[$i];

}

}

//计算转换后的长度

$daxie_len = strlen($daxie);

//设置文字切片从0开始,utf-8汉字占3个字符

$j = 0;

while($daxie_len > 0) {

//每次切片两个汉字

$str = substr($daxie, $j, 6);

//判断切片后的文字不等于零万、零圆、零亿、零零

if($str == ‘零万’ || $str == ‘零圆’ || $str == ‘零亿’ || $str == ‘零零’) {

//重新切片

$left = substr($daxie, 0, $j);

$right = substr($daxie, $j + 3);

$daxie = $left . $right;

}

$j += 3;

$daxie_len -= 3;

}

return ‘人民币’ . $daxie . ‘整’;

}

$result = inttod(99090909090.19);

var_dump($result);想了解更多编程学习,敬请关注php培训栏目!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185359.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java项目中的classpath到底指向的哪里[通俗易懂]

    今天在项目里看到好多地方都用到了类路径,并且自己对路径还不是很清楚,所以就在网上百度了一下!上面图片的意思简单来说,就是classpath只能表示lib目录和WEB-inf/classes路径下的文件,calsspath不能表示的src路径下面的文件,但是从项目结构来看,配置文件一般是不放在放在WEB-INF下面啊,并且也没有看到classes路径,lib目录不是放依赖ja…

    2022年4月4日
    117
  • SpringBoot事务配置管理[通俗易懂]

    SpringBoot事务配置管理[通俗易懂]1.事务使用功能场景:由于数据操作在顺序执行的过程中,线上可能有各种无法预知的问题,任何一步操作都有可能发生异常,异常则会导致后续的操作无法完成,此时由于业务逻辑并未正确的完成,所以在之前操作数据库的动作并不可靠,需要在这种情况下进行数据的回滚。事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要有发生异常就回退到事务未进行操作的状态。事务管理是SpringBoot框架中最为常用的功能之一,我们在实际应用开发时,基本上在service层处理业务逻辑的时候都要加上事

    2022年6月7日
    43
  • win8最流畅的设置方法_Windows 12

    win8最流畅的设置方法_Windows 12indowsXP终极优化设置(精心整理篇)◆一、系统优化设置◆1、系统常规优化1)关闭系统属性中的特效,这可是简单有效的提速良方。点击开始→控制面板→系统→高级→性能→设置→在视觉效果中,设置为调整为最佳性能→确定即可。2)“我的电脑”-“属性”-“高级”-“错误报告”-选择“禁用错误汇报”。3)再点“启动和故障恢复”-“设置”,将“将事件写入系统日志”、“发送管理警报”、“自动重新启动”这三项

    2022年10月21日
    4
  • Instsrv.exe和Srvany.exe的使用方法

    Instsrv.exe和Srvany.exe的使用方法source: http://www.cnblogs.com/zhushunli/p/6043147.htmlInstsrv.exe和Srvany.exe的使用方法要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe。Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。这两个软件都包含在W

    2022年6月13日
    25
  • 摘抄自知乎–由华为裁员传闻引发的思考:年轻人如何避免中年危机?

    摘抄自知乎–由华为裁员传闻引发的思考:年轻人如何避免中年危机?原文:https://www.zhihu.com/question/56419319回答者:王辰—-部分摘抄—- HelloJohn: 记得自己的来处,可能不是件坏事。你是知道我的来处的,其他的人,想写我的过去都不那么准确。 他们说我的工作是从9点到5点的,其实从来就不是9点到5点。事实上…

    2022年7月18日
    20
  • Android系统签名文件

    Android系统签名文件系统签名所需要的工具signapk.jar——————–>out/host/linux-x86/framework/signapk.jar(build/tools/signapk目录编译生成)platform.pk8,platform.x509.pem——————>build/target/product/secu…

    2022年6月21日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号