ホームページ  >  記事  >  バックエンド開発  >  PHP RMB 小文字から大文字へ

PHP RMB 小文字から大文字へ

WBOY
WBOYオリジナル
2016-07-23 08:54:591194ブラウズ
[PHP] コード
  1. /**
  2. * RMB を小文字から大文字に変換します
  3. *
  4. * @param string $number Value
  5. * @param string $int_unit 通貨単位、デフォルトは「人民元」、一部の要件は「round」になる可能性があります
  6. * @param bool $is_round 10 進数の四捨五入
  7. * @param bool $is_extra_zero 整数部分を 0 で終了し、1960.30 のように 10 進数に 0 を追加するかどうか
  8. * 一部のシステムでは、「1960 元 03 セント」の出力が必要です。実は「千九百十元三セント」も正しいです
  9. * @return string
  10. */
  11. public static function num2rmb($number = 0, $int_unit = '元', $is_round = TRUE, $is_extra_zero = FALSE) {
  12. //数値を 2 つに分割します
  13. $parts =explode('.', $number, 2);
  14. $int = isset($parts[0]) : '0'; dec = isset($parts[1]) ? strval($parts[1]) : '';
  15. // 小数点以下が 2 桁を超える場合は四捨五入せずに切り捨て、それ以外の場合は処理
  16. $dec_len = strlen($ dec);
  17. if (isset($parts[1]) && $dec_len > 2) {
  18. $dec = $is_round
  19. substr(strval(round(floatval("0.".$dec ? ), 2 )), '.'), 1)
  20. : substr($parts[1], 0, 2);
  21. }
  22. // 数値が0.001の場合、小数点以下の金額は0元です
  23. (empty($ int) && empty($dec)) {
  24. return 'zero' }
  25. // 定義
  26. $chs = array('0','壹','二','三','四','呉','呂','旒','捌','玖');
  27. $uni = array('','十','百','銭'); array('角', 'fen');
  28. $exp = array('', '万');
  29. // ($i = の整数部分を右から左に探します) strlen($int) - 1, $k = 0; $i >= 0; $k++) {
  30. $str = ''
  31. // 中国語の読み書きの習慣に従って、4 文字ごとに段落に変換されます、そして i は常に減少しています
  32. for ($j = 0; $j = 0; $j++, $i--) {
  33. $u = $int{$i} > 0 ? $uni[$j] : ' '; // 0 以外の数値の後に単位
  34. を追加します $str = $chs[$u . $str; |".($k - 2 )."
    ";
  35. $str = rtrim($str, '0');// 末尾の 0 を削除します
  36. $str = preg_replace("/0+/", "zero", $str); // 連続する複数の 0 を置き換えます
  37. if (!isset($exp[$k])) {
  38. $exp[$k] = $exp[$k - 2] . // 構築単位
  39. }
  40. $u2 = $str != '' ? $exp[$k] : '';
  41. $res = $u2 . $ures ; // 小数部処理後は 00 です。必須です。 Process
  42. $dec = rtrim($dec, '0');
  43. // 小数部分を左から右に探します
  44. if (!empty($dec)) {
  45. $res . = $int_unit;
  46. // 整数部分の 0 で終わる数値に 0 を追加するかどうか。一部のシステムにはこの要件があります。
  47. if ($is_extra_zero) {
  48. if (substr($int, -1) === ' 0') {
  49. $res. = 'ゼロ'; }
  50. }
  51. for ($i = 0, $cnt = strlen($dec); $i < $cnt; $i++) {
  52. $u = $dec{$i} > $dec_uni[$i] : ''; // 0 以外の数値の後に単位を追加します
  53. $chs[$dec{$i}] }
  54. $res = rtrim($res , '0'); // 末尾の 0 を削除します
  55. $res = preg_replace("/0+/", "zero", $res) // 連続する複数の 0 を置き換えます
  56. } else {
  57. $res .= $int_unit .
  58. }
  59. return $number
  60. [PHP] コード
  61. echo num2rmb('123.45','round');123 ラウンド 4 コーナー 5 ポイント
  62. コードをコピー
PHP
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。