php 把数字转换成汉字的代码


Posted in PHP onJuly 21, 2015

直接上实例,写到 千亿上了。

/**

* @author ja颂 
* 把数字1-1亿换成汉字表述,如:123->一百二十三
* @param [num] $num [数字]
* @return [string] [string]
*/
function numToWord($num)
{
$chiNum = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$chiUni = array('','十', '百', '千', '万', '亿', '十', '百', '千');

$chiStr = '';

$num_str = (string)$num;

$count = strlen($num_str);
$last_flag = true; //上一个 是否为0
$zero_flag = true; //是否第一个
$temp_num = null; //临时数字

$chiStr = '';//拼接结果
if ($count == 2) {//两位数
$temp_num = $num_str[0];
$chiStr = $temp_num == 1 ? $chiUni[1] : $chiNum[$temp_num].$chiUni[1];
$temp_num = $num_str[1];
$chiStr .= $temp_num == 0 ? '' : $chiNum[$temp_num]; 
}else if($count > 2){
$index = 0;
for ($i=$count-1; $i >= 0 ; $i--) { 
$temp_num = $num_str[$i];
if ($temp_num == 0) {
if (!$zero_flag && !$last_flag ) {
$chiStr = $chiNum[$temp_num]. $chiStr;
$last_flag = true;
}
}else{
$chiStr = $chiNum[$temp_num].$chiUni[$index%9] .$chiStr;

$zero_flag = false;
$last_flag = false;
}
$index ++;
}
}else{
$chiStr = $chiNum[$num_str[0]]; 
}
return $chiStr;
}

$num = 150;
echo numToWord($num);

方法二:

<?php
 /**
* 数字转换为中文
* @param  string|integer|float  $num  目标数字
* @param  integer $mode 模式[true:金额(默认),false:普通数字表示]
* @param  boolean $sim 使用小写(默认)
* @return string
*/
 function number2chinese($num,$mode = true,$sim = true){
    if(!is_numeric($num)) return '含有非数字非小数点字符!';
    $char    = $sim ? array('零','一','二','三','四','五','六','七','八','九')
    : array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
    $unit    = $sim ? array('','十','百','千','','万','亿','兆')
    : array('','拾','佰','仟','','?','?|','兆');
    $retval  = $mode ? '元':'点';
    //小数部分
    if(strpos($num, '.')){
        list($num,$dec) = explode('.', $num);
        $dec = strval(round($dec,2));
        if($mode){
            $retval .= "{$char[$dec['0']]}角{$char[$dec['1']]}分";
        }else{
            for($i = 0,$c = strlen($dec);$i < $c;$i++) {
                $retval .= $char[$dec[$i]];
            }
        }
    }
    //整数部分
    $str = $mode ? strrev(intval($num)) : strrev($num);
    for($i = 0,$c = strlen($str);$i < $c;$i++) {
        $out[$i] = $char[$str[$i]];
        if($mode){
            $out[$i] .= $str[$i] != '0'? $unit[$i%4] : '';
                if($i>1 and $str[$i]+$str[$i-1] == 0){
                $out[$i] = '';
            }
                if($i%4 == 0){
                $out[$i] .= $unit[4+floor($i/4)];
            }
        }
    }
    $retval = join('',array_reverse($out)) . $retval;
    return $retval;
 }
 //实例调用=====================================================
$num = '0123648867.789';
echo $num,'<br>';
 //普通数字的汉字表示
echo '普通:',number2chinese($num,false),'';
echo '<br>';
 //金额汉字表示
echo '金额(简体):',number2chinese($num,true),'';
echo '<br>';
echo '金额(繁体):',number2chinese($num,true,false);

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php中通过smtp发邮件的类,测试通过
Jan 22 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
Aug 05 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
PHP邮件群发机实现代码
Feb 16 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 PHP
PHP实现简单日历类编写
Aug 28 PHP
通过Email发送PHP错误的方法
Jul 20 #PHP
php实现编辑和保存文件的方法
Jul 20 #PHP
php数组生成html下拉列表的方法
Jul 20 #PHP
php生成过去100年下拉列表的方法
Jul 20 #PHP
PHP基于文件存储实现缓存的方法
Jul 20 #PHP
详解PHP错误日志的获取方法
Jul 20 #PHP
php实现网站顶踩功能的完整前端代码
Jul 19 #PHP
You might like
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
phpnow php探针环境检测代码
2014/11/04 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
python模块smtplib学习
2018/05/22 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
临床医师专业个人自我评价范文
2013/11/07 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
使用Redis做预定库存缓存功能
2022/04/02 Redis
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers