>  기사  >  백엔드 개발  >  PHP에서 금액을 대문자로 변환하는 방법

PHP에서 금액을 대문자로 변환하는 방법

藏色散人
藏色散人원래의
2020-10-29 09:40:123285검색

PHP에서 금액을 대문자로 변환하는 방법: 먼저 변환해야 할 중국어 금액 문자를 정의한 다음 판정 조건을 정의하고 이를 한자로 변환한 다음 판정 조건을 정의하고 계산합니다. 변환된 한자의 길이를 판단 루프로 처리하고, 마지막으로 불필요한 문자를 처리하여 완전한 한자를 반환합니다.

PHP에서 금액을 대문자로 변환하는 방법

추천: "PHP Video Tutorial"

public static function num_to_rmb($num) {
           $c1 = "零壹贰叁肆伍陆柒捌玖";
           $c2 = "分角元拾佰仟万拾佰仟亿";
           //精确到分后面就不要了,所以只留两个小数位
           $num = round($num, 2);
           //将数字转化为整数
           $num = $num * 100;
           if (strlen($num) > 10) {    
                      return "金额太大,请检查";
           }
           $i = 0;
           $c = "";
           while (1) {    
                      if ($i == 0) {    
                                 //获取最后一位数字        
                                 $n = substr($num, strlen($num) - 1, 1);    
                      } else {        
                                 $n = $num % 10;    
                      }    //每次将最后一位数字转化为中文    
                      $p1 = substr($c1, 3 * $n, 3);    
                      $p2 = substr($c2, 3 * $i, 3);    
                      if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {        
                                 $c = $p1 . $p2 . $c;    
                      } else {        
                                 $c = $p1 . $c;    
                      }    
                      $i = $i + 1;    
                      //去掉数字最后一位了    
                      $num = $num / 10;    
                      $num = (int) $num;    
                      //结束循环    
                      if ($num == 0) {        
                                 break;    
                      }
           }
           $j = 0;
           $slen = strlen($c);
           while ($j < $slen) {    
                      //utf8一个汉字相当3个字符    
                      $m = substr($c, $j, 6);    
                      //处理数字中很多0的情况,每次循环去掉一个汉字“零”    
                      if ($m == &#39;零元&#39; || $m == &#39;零万&#39; || $m == &#39;零亿&#39; || $m == &#39;零零&#39;) {        
                                 $left = substr($c, 0, $j);        
                                 $right = substr($c, $j + 3);        
                                 $c = $left . $right;        
                                 $j = $j - 3;        
                                 $slen = $slen - 3;    
                      }    
                      $j = $j + 3;
           }
           //这个是为了去掉类似23.0中最后一个“零”字
           if (substr($c, strlen($c) - 3, 3) == &#39;零&#39;) {    
                      $c = substr($c, 0, strlen($c) - 3);
           }
                      //将处理的汉字加上“整”if (empty($c)) {    
                      return "零元整";
           } else {    
                      return $c . "整";
           }
}

이 메소드의 변환 후 반환 효과는 다음과 같습니다

PHP에서 금액을 대문자로 변환하는 방법

먼저 변환해야 할 중국어 금액 문자를 정의합니다

$c1 = "zero 壹삼사오六捒捌玖";

$c2 = "cents of yuan 십만일억";

정의는 그림과 같습니다

PHP에서 금액을 대문자로 변환하는 방법

그런 다음 정확도를 판단하세요. amount

//精确到分后面就不要了,所以只留两个小数位
$num = round($num, 2);
//将数字转化为整数
$num = $num * 100;
if (strlen($num) > 10) {    
           return "金额太大,请检查";
}

PHP에서 금액을 대문자로 변환하는 방법

그런 다음 판정 조건을 정의하고 루프아웃하여 차례로 한자로 변환

$i = 0;
           $c = "";
           while (1) {    
                      if ($i == 0) {    
                                 //获取最后一位数字        
                                 $n = substr($num, strlen($num) - 1, 1);    
                      } else {        
                                 $n = $num % 10;    
                      }    
                      //每次将最后一位数字转化为中文    
                      $p1 = substr($c1, 3 * $n, 3);    
                      $p2 = substr($c2, 3 * $i, 3);    
                      if ($n != &#39;0&#39; || ($n == &#39;0&#39; && ($p2 == &#39;亿&#39; || $p2 == &#39;万&#39; || $p2 == &#39;元&#39;))) {        
                                 $c = $p1 . $p2 . $c;    
                      } else {        
                                 $c = $p1 . $c;    
                      }    $i = $i + 1;    
                      //去掉数字最后一位了    
                      $num = $num / 10;    
                      $num = (int) $num;    
                      //结束循环    
                      if ($num == 0) {        
                                 break;    
                      }
           }

PHP에서 금액을 대문자로 변환하는 방법

판정 조건을 정의하고 변환된 한자의 길이를 판정 루프로 계산

$j = 0;
$slen = strlen($c);
while ($j < $slen) {    
           //utf8一个汉字相当3个字符    
           $m = substr($c, $j, 6);    
           //处理数字中很多0的情况,每次循环去掉一个汉字“零”    
           if ($m == &#39;零元&#39; || $m == &#39;零万&#39; || $m == &#39;零亿&#39; || $m == &#39;零零&#39;) {  
                      $left = substr($c, 0, $j);        
                      $right = substr($c, $j + 3);        
                      $c = $left . $right;        
                      $j = $j - 3;        
                      $slen = $slen - 3;    
           }    
           $j = $j + 3;
}

PHP에서 금액을 대문자로 변환하는 방법

마지막으로 불필요한 문자를 처리하여 완전한 한자를 반환합니다

if (substr($c, strlen($c) - 3, 3) == &#39;零&#39;) {    
           $c = substr($c, 0, strlen($c) - 3);
}
//将处理的汉字加上“整”
if (empty($c)) {    
           return "零元整";
} else {    
           return $c . "整";
}

PHP에서 금액을 대문자로 변환하는 방법

Notes

변환 과정에서 인코딩 문제에 주의하세요

이 방법은 숫자 금액을 중국어 금액으로 변환하는 경우에만 사용됩니다

위 내용은 PHP에서 금액을 대문자로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.