溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php怎樣實現(xiàn)金額轉大寫

發(fā)布時間:2020-10-30 09:56:40 來源:億速云 閱讀:295 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關php怎樣實現(xiàn)金額轉大寫的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

php實現(xiàn)金額轉大寫的方法:首先定義需要轉換金額的中文金額字符;然后定義判斷條件并循環(huán)取出,并依次轉換為中文字符;接著定義判斷條件,將轉換的中文字符計算長度作為判斷循環(huán);最后處理不必要字符,并返回完整中文字符即可。

public static function num_to_rmb($num) {
           $c1 = "零壹貳叁肆伍陸柒捌玖";
           $c2 = "分角元拾佰仟萬拾佰仟億";
           //精確到分后面就不要了,所以只留兩個小數(shù)位
           $num = round($num, 2);
           //將數(shù)字轉化為整數(shù)
           $num = $num * 100;
           if (strlen($num) > 10) {    
                      return "金額太大,請檢查";
           }
           $i = 0;
           $c = "";
           while (1) {    
                      if ($i == 0) {    
                                 //獲取最后一位數(shù)字        
                                 $n = substr($num, strlen($num) - 1, 1);    
                      } else {        
                                 $n = $num % 10;    
                      }    //每次將最后一位數(shù)字轉化為中文    
                      $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;    
                      //去掉數(shù)字最后一位了    
                      $num = $num / 10;    
                      $num = (int) $num;    
                      //結束循環(huán)    
                      if ($num == 0) {        
                                 break;    
                      }
           }
           $j = 0;
           $slen = strlen($c);
           while ($j < $slen) {    
                      //utf8一個漢字相當3個字符    
                      $m = substr($c, $j, 6);    
                      //處理數(shù)字中很多0的情況,每次循環(huán)去掉一個漢字“零”    
                      if ($m == '零元' || $m == '零萬' || $m == '零億' || $m == '零零') {        
                                 $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) == '零') {    
                      $c = substr($c, 0, strlen($c) - 3);
           }
                      //將處理的漢字加上“整”if (empty($c)) {    
                      return "零元整";
           } else {    
                      return $c . "整";
           }
}

該方法轉換后返回效果如下所示

php怎樣實現(xiàn)金額轉大寫

首先定義需要轉換金額的中文金額字符

$c1 = "零壹貳叁肆伍陸柒捌玖";

$c2 = "分角元拾佰仟萬拾佰仟億";

定義如圖所示

php怎樣實現(xiàn)金額轉大寫

然后判斷金額準確性

//精確到分后面就不要了,所以只留兩個小數(shù)位
$num = round($num, 2);
//將數(shù)字轉化為整數(shù)
$num = $num * 100;
if (strlen($num) > 10) {    
           return "金額太大,請檢查";
}

php怎樣實現(xiàn)金額轉大寫

然后定義判斷條件并循環(huán)取出,并依次轉換為中文字符

$i = 0;
           $c = "";
           while (1) {    
                      if ($i == 0) {    
                                 //獲取最后一位數(shù)字        
                                 $n = substr($num, strlen($num) - 1, 1);    
                      } else {        
                                 $n = $num % 10;    
                      }    
                      //每次將最后一位數(shù)字轉化為中文    
                      $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;    
                      //去掉數(shù)字最后一位了    
                      $num = $num / 10;    
                      $num = (int) $num;    
                      //結束循環(huán)    
                      if ($num == 0) {        
                                 break;    
                      }
           }

php怎樣實現(xiàn)金額轉大寫

定義判斷條件,將轉換的中文字符計算長度作為判斷循環(huán)

$j = 0;
$slen = strlen($c);
while ($j < $slen) {    
           //utf8一個漢字相當3個字符    
           $m = substr($c, $j, 6);    
           //處理數(shù)字中很多0的情況,每次循環(huán)去掉一個漢字“零”    
           if ($m == '零元' || $m == '零萬' || $m == '零億' || $m == '零零') {  
                      $left = substr($c, 0, $j);        
                      $right = substr($c, $j + 3);        
                      $c = $left . $right;        
                      $j = $j - 3;        
                      $slen = $slen - 3;    
           }    
           $j = $j + 3;
}

php怎樣實現(xiàn)金額轉大寫

最后處理不必要字符,并返回完整中文字符

if (substr($c, strlen($c) - 3, 3) == '零') {    
           $c = substr($c, 0, strlen($c) - 3);
}
//將處理的漢字加上“整”
if (empty($c)) {    
           return "零元整";
} else {    
           return $c . "整";
}

php怎樣實現(xiàn)金額轉大寫

注意事項

注意轉換過程編碼問題

該方法只針對數(shù)字金額轉換中文金額使用

感謝各位的閱讀!關于php怎樣實現(xiàn)金額轉大寫就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI