Heim  >  Artikel  >  php教程  >  数字转化为人民币大写

数字转化为人民币大写

PHP中文网
PHP中文网Original
2016-05-26 08:18:341694Durchsuche

数字转化为人民币大写

<?php
function numTrmb($num)
{
    $d = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
    $e = array(&#39;元&#39;, &#39;拾&#39;, &#39;佰&#39;, &#39;仟&#39;, &#39;万&#39;, &#39;拾万&#39;, &#39;佰万&#39;, &#39;仟万&#39;, &#39;亿&#39;, &#39;拾亿&#39;, &#39;佰亿&#39;, &#39;仟亿&#39;);
    $p = array(&#39;分&#39;, &#39;角&#39;);
    $zheng = "整";
    $final = array();
    $inwan = 0;//是否有万
    $inyi = 0;//是否有亿
    $len = 0;//小数点后的长度
    $y = 0;
    $num = round($num, 2);//精确到分
    if (strlen($num) > 15) {
        return "金额太大";
        die();
    }
    if ($c = strpos($num, &#39;.&#39;)) {//有小数点,$c为小数点前有几位
        $len=strlen($num)-strpos($num,&#39;.&#39;)-1;//小数点后有几位数
    }else {//无小数点
        $c = strlen($num);
        $zheng = &#39;整&#39;;
    }
    for ($i = 0; $i < $c; $i++) {
        $bit_num = substr($num, $i, 1);
        if ($bit_num != 0 || substr($num, $i + 1, 1) != 0) {
            @$low = $low . $d[$bit_num];
        }
        if ($bit_num || $i == $c - 1) {
            @$low = $low . $e[$c - $i - 1];
        }
    }
    if($len!=1){
    for ($j = $len; $j >= 1; $j--) {
        $point_num = substr($num, strlen($num) - $j, 1);
           @$low = $low . $d[$point_num] . $p[$j - 1];
    }
    }else{
        $point_num = substr($num, strlen($num) - $len, 1);
        $low=$low.$d[$point_num].$p[$len];
    }
    $chinses = str_split($low, 3);//字符串转化为数组
    for ($x = count($chinses) - 1; $x >= 0; $x--) {
        if ($inwan == 0 && $chinses[$x] == $e[4]) {//过滤重复的万
            $final[$y++] = $chinses[$x];
            $inwan = 1;
        }
        if ($inyi == 0 && $chinses[$x] == $e[8]) {//过滤重复的亿
            $final[$y++] = $chinses[$x];
            $inyi = 1;
            $inwan = 0;
        }
        if ($chinses[$x] != $e[4] && $chinses[$x] !== $e[8]) {
            $final[$y++] = $chinses[$x];
        }
    }
    $newstr = (array_reverse($final));
    $nstr = join($newstr);
    if ((substr($num, -2, 1) == &#39;0&#39;) && (substr($num, -1) <> 0)) {
        $nstr = substr($nstr, 0, (strlen($nstr) -6)).&#39;零&#39;. substr($nstr, -6, 6);
    }
    $nstr=(strpos($nstr,&#39;零角&#39;)) ? substr_replace($nstr,"",strpos($nstr,&#39;零角&#39;),6) : $nstr;
    return $nstr = (substr($nstr,-3,3)==&#39;元&#39;) ? $nstr . $zheng : $nstr;
}
echo numTrmb(556455456156.65);

                   

 以上就是数字转化为人民币大写的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn