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 相关文章推荐
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 PHP
PHP防止跨域提交表单
Nov 01 PHP
thinkphp中session和cookie无效的解决方法
Dec 19 PHP
帝国cms常用标签汇总
Jul 06 PHP
php结合curl实现多线程抓取
Jul 09 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
浅谈PHP中的那些魔术常量
Dec 02 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在字符断点处截断文字的实现代码
2011/04/21 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
php按单词截取字符串的方法
2015/04/07 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
Express的路由详解
2015/12/10 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
python基础教程之缩进介绍
2014/08/29 Python
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
python字符串循环左移
2019/03/08 Python
Python连接字符串过程详解
2020/01/06 Python
Python爬取梨视频的示例
2021/01/29 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
前台文员岗位职责
2013/12/28 职场文书
小区消防演习方案
2014/02/21 职场文书
合作合同协议书范本
2015/01/27 职场文书
小浪底导游词
2015/02/12 职场文书
计生个人工作总结
2015/02/28 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
导游词之无锡梅园
2019/11/28 职场文书
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers