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 相关文章推荐
PHP+APACHE实现用户论证的方法
Oct 09 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
PHP curl 获取响应的状态码的方法
Jan 13 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
laravel添加前台跳转成功页面示例
Oct 22 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
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
在Python中使用SQLite的简单教程
2015/04/29 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
python系列 文件操作的代码
2019/10/06 Python
Python for循环及基础用法详解
2019/11/08 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
c语言常见笔试题总结
2016/09/05 面试题
傅雷家书读书笔记
2015/06/29 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
MySQL数据库完全卸载的方法
2022/03/03 MySQL
使用python求解迷宫问题的三种实现方法
2022/03/17 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android