PHP에서 RMB를 소문자에서 대문자로 변환하는 방법: 먼저 PHP 샘플 파일을 만든 다음 "함수 num2rmb($number = 0, $int_unit = '', $is_round=FALSE...)를 사용하세요. }" 변환 방법 RMB를 소문자에서 대문자로 변환하면 됩니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
php RMB 소문자 대 대문자 기능, 길이 제한 없음, 분 단위 정확
인보이스 인쇄 시 또는 청구서를 표시할 때 RMB 금액을 소문자에서 대문자로 변환해야 하는 경우가 있습니다. 다음은 다음 기능을 지원하는 기능을 개선한 것입니다.
천문 숫자를 지원하며 정수 숫자는 이론적으로 무한히 길 수 있습니다.
소수점을 지원합니다. 통화의 경우 일반적으로 소수점 이하 두 자리까지 정확하며 소수점 자리를 반올림할지 여부를 설정할 수 있습니다.
일부 시스템에서는 대문자를 "반올림"해야 합니다. 일부 시스템에서는 사용자 정의할 수 있는 "위안"이 필요합니다.
정수로 끝나고 소수점 이하 자릿수를 포함하는 숫자 끝에 사용자 정의 패딩을 지원합니다. 예를 들어 일부 시스템에서는 1960.30과 같은 숫자를 변환해야 합니다. 대문자는 "1천9백6백달러 3각"이고 일부 시스템에서는 "1천960위안 030센트"가 필요합니다. 두 경우 모두 "기본 규정에 따라 정확합니다. 청구서 및 정산 바우처를 올바르게 작성하기 위해". 이제 사용자 정의할 수 있습니다.
/** * 人民币小写转大写 * * @param string $number 数值 * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆" * @param bool $is_round 是否对小数进行四舍五入 * @param bool $is_extra_zero 是否对整数部分以0结尾,小数存在的数字附加0,比如1960.30, * 有的系统要求输出"壹仟玖佰陆拾元零叁角",实际上"壹仟玖佰陆拾元叁角"也是对的 * @return string */ function num2rmb($number = 0, $int_unit = '', $is_round = FALSE, $is_extra_zero = FALSE , $rmb = FALSE) { // 将数字切分成两段 $parts = explode('.', $number, 2); $int = isset($parts[0]) ? strval($parts[0]) : '0'; $dec = isset($parts[1]) ? strval($parts[1]) : ''; // 如果小数点后多于2位,不四舍五入就直接截,否则就处理 $dec_len = strlen($dec); if (isset($parts[1]) && $dec_len > 2) { $dec = $is_round ? substr(strrchr(strval(round(floatval("0.".$dec), 2)), '.'), 1) : substr($parts[1], 0, 2); } // 当number为0.001时,小数点后的金额为0元 if(empty($int) && empty($dec)) { return '零'; } // 定义 if($rmb){ $chs = array('0','壹','贰','叁','肆','伍','陆','柒','捌','玖'); $uni = array('','拾','佰','仟'); $dec_uni = array('角', '分'); $exp = array('', '万'); }else { $chs = array('0','一','二','三','四','五','六','七','八','九'); $uni = array('','十','百','千'); $dec_uni = array('角', '分'); $exp = array('', '万'); } $res = ''; // 整数部分从右向左找 for($i = strlen($int) - 1, $k = 0; $i >= 0; $k++) { $str = ''; // 按照中文读写习惯,每4个字为一段进行转化,i一直在减 for($j = 0; $j < 4 && $i >= 0; $j++, $i--) { $u = $int{$i} > 0 ? $uni[$j] : ''; // 非0的数字后面添加单位 $str = $chs[$int{$i}] . $u . $str; } //echo $str."|".($k - 2)."<br>"; $str = rtrim($str, '0');// 去掉末尾的0 $str = preg_replace("/0+/", "零", $str); // 替换多个连续的0 if(!isset($exp[$k])) { $exp[$k] = $exp[$k - 2] . '亿'; // 构建单位 } $u2 = $str != '' ? $exp[$k] : ''; $res = $str . $u2 . $res; } // 如果小数部分处理完之后是00,需要处理下 $dec = rtrim($dec, '0'); // 小数部分从左向右找 if(!empty($dec)) { $res .= $int_unit; // 是否要在整数部分以0结尾的数字后附加0,有的系统有这要求 if ($is_extra_zero) { if (substr($int, -1) === '0') { $res.= '零'; } } for($i = 0, $cnt = strlen($dec); $i < $cnt; $i++) { $u = $dec{$i} > 0 ? $dec_uni[$i] : ''; // 非0的数字后面添加单位 $res .= $chs[$dec{$i}] . $u; } $res = rtrim($res, '0');// 去掉末尾的0 $res = preg_replace("/0+/", "零", $res); // 替换多个连续的0 } else { if($rmb){ $res .= $int_unit . '整'; } } return $res; }
출력 결과:
1000000000000000012345678900.501:壹仟亿亿亿零壹佰贰拾叁亿肆仟伍佰陆拾柒万捌仟玖佰元伍角 1960.30:壹仟玖佰陆拾元叁角 1960.30:壹仟玖佰陆拾圆零叁角 123456789.005:壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元零壹分 123456789.005:壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整 10000000000000000060009.101:壹佰万亿亿零陆万零玖元壹角 1680.32:壹仟陆佰捌拾元叁角贰分
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 소문자 RMB를 대문자로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!