人民币数字和中文汉字转换

在PHP中,将人民币的中文汉字金额转换为数字,或者将数字转换为人民币的中文汉字金额,通常需要自定义一些函数来实现这一转换过程。下面分别给出这两个转换的示例代码。

数字转人民币中文汉字

php 复制代码
function numberToChinese($num) {  
    $cnNums = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');  
    $cnUnits = array('', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿');  
    $numStr = strval($num);  
    $numStr = array_reverse(str_split($numStr));  
    $result = '';  
    $zeroCount = 0;  
      
    for ($i = 0; $i < count($numStr); $i++) {  
        $digit = intval($numStr[$i]);  
        $unit = $cnUnits[$i % 4];  
          
        if ($digit === 0) {  
            $zeroCount++;  
        } else {  
            if ($zeroCount > 0) {  
                $result = $cnNums[0] . $result;  
            }  
            $zeroCount = 0;  
            $result = $cnNums[$digit] . $unit . $result;  
        }  
          
        if (($i + 1) % 4 === 0 && $digit !== 0) {  
            $result = $cnUnits[4 + intval(($i + 1) / 4) - 1] . $result;  
        }  
    }  
      
    $result = trim($result, $cnNums[0]); // 去除结果字符串两边的零  
    if (empty($result)) {  
        $result = $cnNums[0]; // 如果结果为空,则返回零  
    }  
      
    return '人民币' . $result . '元整';  
}  
  
// 示例用法  
echo numberToChinese(123456789); // 输出:人民币壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整

人民币中文汉字转数字

php 复制代码
function chineseToNumber($chinese) {  
    // 去除人民币和元整等字样  
    $chinese = preg_replace('/人民币|元整|元正|元|整|正/i', '', $chinese);  
    $cnNums = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');  
    $cnUnits = array('', '拾', '佰', '仟');  
    $unitPosition = array(1, 10, 100, 1000); // 个、十、百、千  
    $num = 0;  
    $position = 0; // 万位、亿位等的位置,初始为个位  
    $isPrevZero = false; // 前一个数字是否为零  
  
    $chinese = str_split($chinese);  
    for ($i = 0; $i < count($chinese); $i++) {  
        $char = $chinese[$i];  
        if (in_array($char, $cnNums)) {  
            $digit = array_search($char, $cnNums);  
            if ($digit === 0 && $isPrevZero) {  
                continue; // 连续的零只计算一个  
            }  
            $num += $digit * $unitPosition[$i % 4] * pow(10000, intval($position));  
            $isPrevZero = ($digit === 0);  
        } elseif (in_array($char, $cnUnits)) {  
            if ($char === '万' || $char === '亿') {  
                $position++;  
            }  
        }  
    }  
  
    return $num;  
}  
  
// 示例用法  
echo chineseToNumber('人民币壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整'); // 输出:123456789
相关推荐
huaweichenai1 小时前
php 根据每个类型的抽签范围实现抽签功能
开发语言·php
Cheng小攸7 小时前
入侵检测环境部署
开发语言·php
xingpanvip8 小时前
星盘接口开发文档:马盘次限盘接口指南
android·开发语言·python·php·lua
陕西企来客9 小时前
2026 西安 GEO 优化技术解析:前沿技术与行业规范深度企来客科技行业白皮书声明
开发语言·搜索引擎·php
淘矿人10 小时前
DeepSeek V4对决Claude 4.8:AI模型终极横评
java·开发语言·人工智能·python·sql·php·pygame
用户634976594769713 小时前
ElasticKit:PHP Elasticsearch 查询构建器
php
狗凯之家源码网13 小时前
多语言企鹅养殖投资返利系统 自定义产品配置 一键部署源码
前端·架构·php
2401_8685347814 小时前
防火墙的具体概念
服务器·网络·php
withoutfear14 小时前
Fastadmin中获取IP和手机号归属地信息
php·thinkphp·fastadmin·ip归属地·手机号归属地
dog25014 小时前
从扩张性看 AWS RNG 为何优于传统胖树
云计算·php·aws