<?php
/****************************** 相关说明 ***************************
函数功能: 人民币小写=>大写转换.
测试环境: Win2K svr, Apache 2.0.47, php 4.3.3 .
参 数: 0.01 <= $rmb <= 9999999999999.99,小数点后保留两位有效位,
超过两位按四舍五入计.参数可以是 int,float 或 string 类型.
E-mail : [email protected]
*******************************************************************/
function rmb_convert($rmb)
{
if(!empty($rmb)&&is_numeric($rmb)
&&strlen($rmb_tmp=sprintf("%01.2f",$rmb))<=16)
{
$conv_tb=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
,"i"=>"亿","w"=>"万","q"=>"仟","b"=>"佰","s"=>"拾"
,"y"=>"元","j"=>"角","f"=>"分","z"=>"整");
list($rmb_zs,$rmb_xs)=explode('.',$rmb_tmp);
$tmp=sprintf("%015s",$rmb_zs.$rmb_xs);
$str_tmp=$tmp[0]."w"
.$tmp[1]."q".$tmp[2]."b".$tmp[3]."s".$tmp[4]."i"
.$tmp[5]."q".$tmp[6]."b".$tmp[7]."s".$tmp[8]."w"
.$tmp[9]."q".$tmp[10]."b".$tmp[11]."s".$tmp[12]."y"
.$tmp[13]."j".$tmp[14]."f";
$rslt_tmp="";
for($str_pos=0;$str_pos<=strlen($str_tmp);$str_pos++)
{
if(is_numeric($str_tmp[$str_pos]))
{
if($str_tmp[$str_pos]!=0)
$rslt_tmp.=$str_tmp[$str_pos].$str_tmp[$str_pos+1];
else
{
if(!empty($rslt_tmp))
{
if($str_tmp[$str_pos+1]=='i'||$str_tmp[$str_pos+1]=='w'||
$str_tmp[$str_pos+1]=='y')
$rslt_tmp.=$str_tmp[$str_pos+1];
elseif($str_tmp[$str_pos+2]!=0)
$rslt_tmp.="0";
}
}
}
}
if(!empty($rslt_tmp))
$rslt_tmp.='z';
else
echo "参数错误!";
$rslt="";
for($pos=0;$pos<=strlen($rslt_tmp);$pos++)
{
$rslt.=$conv_tb[$rslt_tmp[$pos]];
}
return $rslt;
}
else
{
echo "参数错误!";
}
}echo rmb_convert(9999999999999.99);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分整echo rmb_convert(09999999999999);
//参数错误!echo rmb_convert(9999999999999);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元整echo rmb_convert(9999999999999.999);
//参数错误!echo rmb_convert(0.0049);
//参数错误!echo rmb_convert(.0051);
//壹分整echo rmb_convert("70909060807.01");
//柒佰零玖亿零玖佰零陆万零捌佰零柒元零壹分整echo rmb_convert("70909060-807.01");
//参数错误!
?>
/****************************** 相关说明 ***************************
函数功能: 人民币小写=>大写转换.
测试环境: Win2K svr, Apache 2.0.47, php 4.3.3 .
参 数: 0.01 <= $rmb <= 9999999999999.99,小数点后保留两位有效位,
超过两位按四舍五入计.参数可以是 int,float 或 string 类型.
E-mail : [email protected]
*******************************************************************/
function rmb_convert($rmb)
{
if(!empty($rmb)&&is_numeric($rmb)
&&strlen($rmb_tmp=sprintf("%01.2f",$rmb))<=16)
{
$conv_tb=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
,"i"=>"亿","w"=>"万","q"=>"仟","b"=>"佰","s"=>"拾"
,"y"=>"元","j"=>"角","f"=>"分","z"=>"整");
list($rmb_zs,$rmb_xs)=explode('.',$rmb_tmp);
$tmp=sprintf("%015s",$rmb_zs.$rmb_xs);
$str_tmp=$tmp[0]."w"
.$tmp[1]."q".$tmp[2]."b".$tmp[3]."s".$tmp[4]."i"
.$tmp[5]."q".$tmp[6]."b".$tmp[7]."s".$tmp[8]."w"
.$tmp[9]."q".$tmp[10]."b".$tmp[11]."s".$tmp[12]."y"
.$tmp[13]."j".$tmp[14]."f";
$rslt_tmp="";
for($str_pos=0;$str_pos<=strlen($str_tmp);$str_pos++)
{
if(is_numeric($str_tmp[$str_pos]))
{
if($str_tmp[$str_pos]!=0)
$rslt_tmp.=$str_tmp[$str_pos].$str_tmp[$str_pos+1];
else
{
if(!empty($rslt_tmp))
{
if($str_tmp[$str_pos+1]=='i'||$str_tmp[$str_pos+1]=='w'||
$str_tmp[$str_pos+1]=='y')
$rslt_tmp.=$str_tmp[$str_pos+1];
elseif($str_tmp[$str_pos+2]!=0)
$rslt_tmp.="0";
}
}
}
}
if(!empty($rslt_tmp))
$rslt_tmp.='z';
else
echo "参数错误!";
$rslt="";
for($pos=0;$pos<=strlen($rslt_tmp);$pos++)
{
$rslt.=$conv_tb[$rslt_tmp[$pos]];
}
return $rslt;
}
else
{
echo "参数错误!";
}
}echo rmb_convert(9999999999999.99);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分整echo rmb_convert(09999999999999);
//参数错误!echo rmb_convert(9999999999999);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元整echo rmb_convert(9999999999999.999);
//参数错误!echo rmb_convert(0.0049);
//参数错误!echo rmb_convert(.0051);
//壹分整echo rmb_convert("70909060807.01");
//柒佰零玖亿零玖佰零陆万零捌佰零柒元零壹分整echo rmb_convert("70909060-807.01");
//参数错误!
?>
解决方案 »
- php curl如何得到HTTP chunked response中chunked data size?
- PHP图片处理动态调动大小求助。。。
- 一个简单POST的问题
- 求Paypal的支付接口代码
- 一个PHP参数问题
- PHP基础问题
- Appserv和分别安装Apatche+Mysql+Php那种更适合假设PHP服务器运行环境?
- xuzuning(唠叨) 大哥请进,关于你帮写的一正则表达式问题??
- 新手救急!!!!!!!!!求大家帮帮忙能否给一个论坛的源码。
- 能否在服务器端生成XML文档在提交给另一个服务器?并得到其返回结果
- 如何将一个textarea文本框的内容写到别一页的textarea文本框里面?
- 求助!SESSION问题,在线等!老是出现这个问题!请问怎么办,大哥?
//输出 柒佰亿万零柒元零壹分整
应该输出:
柒佰亿零柒元零壹分整
或
柒佰亿柒元零壹分整
现修改如下:<?php
function rmb_convert($rmb)
{
if(!empty($rmb)&&is_numeric($rmb)
&&strlen($rmb_tmp=sprintf("%01.2f",$rmb))<=16)
{
$conv_tb=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
,"i"=>"亿","w"=>"万","q"=>"仟","b"=>"佰","s"=>"拾"
,"y"=>"元","j"=>"角","f"=>"分","z"=>"整");
list($rmb_zs,$rmb_xs)=explode('.',$rmb_tmp);
$tmp=sprintf("%015s",$rmb_zs.$rmb_xs);
$str_tmp=$tmp[0]."w"
.$tmp[1]."q".$tmp[2]."b".$tmp[3]."s".$tmp[4]."i"
.$tmp[5]."q".$tmp[6]."b".$tmp[7]."s".$tmp[8]."w"
.$tmp[9]."q".$tmp[10]."b".$tmp[11]."s".$tmp[12]."y"
.$tmp[13]."j".$tmp[14]."f";
$rslt_tmp="";
for($str_pos=0;$str_pos<=strlen($str_tmp);$str_pos++)
{
if(is_numeric($str_tmp[$str_pos]))
{
if($str_tmp[$str_pos]!=0)
$rslt_tmp.=$str_tmp[$str_pos].$str_tmp[$str_pos+1];
else
{
if(!empty($rslt_tmp))
{
if(($str_tmp[$str_pos+1]=='i'||$str_tmp[$str_pos+1]=='w'||
$str_tmp[$str_pos+1]=='y')
&&$rslt_tmp[strlen($rslt_tmp)-1]!='i')
$rslt_tmp.=$str_tmp[$str_pos+1];
elseif($str_tmp[$str_pos+2]!=0)
$rslt_tmp.="0";
}
}
}
}
if(!empty($rslt_tmp))
$rslt_tmp.='z';
else
echo "参数错误!";
$rslt="";
for($pos=0;$pos<=strlen($rslt_tmp);$pos++)
{
$rslt.=$conv_tb[$rslt_tmp[$pos]];
}
return $rslt;
}
else
{
echo "参数错误!";
}
}echo rmb_convert(9999999999999.99);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分整echo rmb_convert(09999999999999);
//参数错误!echo rmb_convert(9999999999999);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元整echo rmb_convert(9999999999999.999);
//参数错误!echo rmb_convert(0.0049);
//参数错误!echo rmb_convert(.0051);
//壹分整echo rmb_convert("70909060807.01");
//柒佰零玖亿零玖佰零陆万零捌佰零柒元零壹分整echo rmb_convert("70909060-807.01");
//参数错误!echo rmb_convert(7000000000007.01);
//柒万亿零柒元零壹分整
?>
12345678901234.98了,不知道是不是跟php.ini中的 precision 设置有关,请各路高手赐教...