动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

 Alpha.Z写的数字转换为中文的类的补充

作者来源: 
阅读 数 501 人次 , 2006-3-29 4:11:00 


去掉了一些多余的零

<?php
// 诸海加 2000-7-19
// xiaocui 2000-7-26

class chinesenumber
{
var $basical=array(0=>"零","一","二","三","四","五","六","七","八","九");
//var $basical=array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var $advanced=array(1=>"十","百","千");
//var $advanced=array(1=>"拾","佰","仟");
var $top=array(1=>"万","亿");

var $level; // 以4位为一级

// 先实现万一下的数的转换
function parsenumber($number)
{
if ($number>999999999999) // 只能处理到千亿。
return "数字太大,无法处理。抱歉!";
if ($number==0)
return "零";

for($this->level=0;$number>0.0001;$this->level++,$number=floor($number / 10000))
{
// 对于中文来说,应该是4位为一组。
// 四个变量分别对应 个、十、百、千 位。
$n1=substr($number,-1,1);
if($number>9)
$n2=substr($number,-2,1);
else
$n2=0;
if($number>99)
$n3=substr($number,-3,1);
else
$n3=0;
if($number>999)
$n4=substr($number,-4,1);
else
$n4=0;

if($n4)
$parsed[$this->level].=$this->basical[$n4].$this->advanced[3];
else
if(($number/10000)>=1) // 千位为0,数值大于9999的情况
$parsed[$this->level].="零";
if($n3)
$parsed[$this->level].=$this->basical[$n3].$this->advanced[2];
else
if(!ereg("零$",$parsed[$this->level]) && ($number / 1000)>=1) // 不出现连续两个“零”的情况
$parsed[$this->level].="零";
if($n2)
$parsed[$this->level].=$this->basical[$n2].$this->advanced[1];
else
if(!ereg("零$",$parsed[$this->level]) && ($number / 100)>=1) // 不出现连续两个“零”的情况
$parsed[$this->level].="零";
if($n1)
$parsed[$this->level].=$this->basical[$n1];

if($parsed[$this->level]!="零")
{
 if(ereg("零$",$parsed[$this->level]))
$parsed[$this->level]=substr($parsed[$this->level],0,strlen($parsed[$this->level])-2);
 if($this->level>0)
$result=$parsed[$this->level].$this->top[$this->level].$result;
 else
$result=$parsed[$this->level].$result;
}
}
//for($this->level-=1;$this->level>=0;$this->level--)
//{
// $result.=$parsed[$this->level].$this->top[$this->level];
//}

//if(ereg("零$",$result))
// $result=substr($result,0,strlen($result)-2);

return $result;

}
};

$c=new chinesenumber();
echo $c->parsenumber(100000000001);
?>

 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:取得MYSQL中ENUM(枚举)列的全部可能值
· 下一篇:修改Zend引擎实现PHP源码加密的原理及实践
· PHP:404错误陷阱并email给管理员的程序
· php+omni 简单易行
· PHP中的日期及时间
· 模板,PHPLIB处理方式(一)
· 采用PHP的用户认证


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077