php 将数字转为大写,将数字小写转为大写 php

将数字小写转为大写,这原来是一个类,我改写为一个函数.修复和增加了其中一些在实际工作中需要的功能.使其更加全面.100%可用.

function change_num($num)

{

$d = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');

$e =

array('元','拾','佰','仟','万','拾万','佰万','仟万','亿','拾亿','佰亿','仟亿','万亿');

$p = array('分','角');

$zheng='整'; //追加"整"字

$final = array(); //结果

$inwan=0; //是否有万

$inyi=0; //是否有亿

$len_pointdigit=0; //小数点后长度

$y=0;

if($c = strpos($num, '.'))

//有小数点,$c为小数点前有几位数

{ $len_pointdigit = strlen($num)-strpos($num, '.')-1; //

判断小数点后有几位数

if($c>13) //简单的错误处理

{

echo "数额太大,已经超出万亿.";

die();

}

elseif($len_pointdigit>2)

//$len_pointdigit小数点后有几位

{

echo "小数点后只支持2位.";

die();

}

}

else //无小数点

{

$c = strlen($num);

$zheng = '整';

}

for($i=0;$i

//处理整数部分

{

$bit_num = substr($num, $i, 1); //逐字读取

左->右

if($bit_num!=0 || substr($num, $i+1, 1)!=0) //当前是零 下一位还是零的话

就不显示

@$low2chinses = $low2chinses.$d[$bit_num];

if($bit_num || $i==$c-1) @$low2chinses = $low2chinses.$e[$c-$i-1];

}

for($j=$len_pointdigit;

$j>=1; $j--) //处理小数部分

{

$point_num = substr($num, strlen($num)-$j, 1); //逐字读取

左->右

if($point_num != 0)

@$low2chinses = $low2chinses.$d[$point_num].$p[$j-1];

//if(substr($num, strlen($num)-2, 1)==0

&& substr($num, strlen($num)-1,

1)==0) //小数点后两位都是0

}

$chinses =

str_split($low2chinses,2); //字符串转换成数组

//print_r($chinses);

for($x=sizeof($chinses)-1;$x>=0;$x--)

//过滤无效的信息

{

if($inwan==0&&$chinses[$x]==$e[4])

//过滤重复的"万"

{

$final[$y++] = $chinses[$x];

$inwan=1;

}

if($inyi==0&&$chinses[$x]==$e[8])

//过滤重复的"亿"

{

$final[$y++] = $chinses[$x];

$inyi=1;

$inwan=0;

}

if($chinses[$x]!=$e[4]&&$chinses[$x]!=$e[8])

//进行整理,将最后的值赋予$final数组

$final[$y++] = $chinses[$x];

}

$newstring=(array_reverse($final));

//$final为倒数组,$newstring为正常可以使用的数组

$nstring=join($newstring);

//数组变成字符串

if(substr($num,-2,1)==0

&&

substr($num,-1)<>0) //判断原金额角位为0 ?

分位不为0 ?

{ $nstring=substr($nstring,0,(strlen($nstring)-4))."零".substr($nstring,-4,4);

//这样加一个零字

}

$fen="分";

$fj=substr_count($nstring, $fen); //如果没有查到分这个字

return

$nstring=($fj==0)?$nstring.$zheng:$nstring; //就将"整"加到后面

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值