PHP 数字转汉字函数
2015-09-07 16:21
716 查看
/** * 数字转汉字描述 */ function numToStr($num) { // 判断正确数字 if (!preg_match('/^(\d*)(\.\d+)?$/', $num)) return '不是正确的数字!'; // 准备参数 $num = ltrim($num, '0'); $num_arr = ['', '一', '两', '三', '四', '五', '六', '七', '八', '九']; $desc_arr = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万亿', '十', '百', '千', '万万亿', '十', '百', '千']; // 按字符串处理 $count = strlen($num); if ($count > count($desc_arr)) return '数字超出计算范围!'; $point = strpos($num, '.') ?: $count; // 没有点时取count for ($i = 0; $i < $count; $i++) { $cn_zero = $num[$i] !== '0' && $num[$i - 1] === '0' && $num[$i] !== '.' ? '零' : ''; // 是否输出零 $cn_num = $i > $point && !$num_arr[$num[$i]] ? '零' : $num_arr[$num[$i]]; // 输出字数 $j = $point - $i - 1; // 计算单位数 $cn_desc = $num[$i] == '0' && $j % 4 != 0 || substr($num, $i - 3, 4) === '0000' ? '' : $desc_arr[$j]; // 输出单位 if ($i == 0 && $cn_desc == '十') $cn_num = ''; // 国人习惯一十开头不读一 if ($i === $point) $res .= '点'; // 输出点 $res .= $cn_zero . $cn_num . $cn_desc; } return $res; }
1001.3输出一千零一点三
欢迎测试反馈~
相关文章推荐
- php 递归的生成目录函数
- php图片水印添加,压缩,剪切的封装类实现
- Yii2 DetailView添加html属性
- 关于thinkphp中U函数传参数问题
- 模板输出U方法带锚点 thinkphp
- php unserialize(): Error at offset 470 of 660 bytes
- PHP找回密码机制流程
- PHP学习---ThinkCMF的三个基类
- php验证码实现代码(3种)
- phpstrom 如何设置php开发环境----已经安装了xampp开发环境
- PHP json数据格式化方法
- Yii2高级模板的安装
- PHP学习---THINKCMF目录结构学习
- 送给和我一样曾经浮躁过的PHP程序猿
- PHP学习----Access denied for user 'root'@'localhost'
- PHPExcel类实用的方法总结
- 怎么在THINKPHP中引入PHP文件
- SDP协议分析
- ThinkPHP使用公共语言包
- php使用ssh2访问出现提示This service allows sftp connections only.