반응형
PHP: 단어로 된 숫자 표현
주어진 숫자를 단어로 표현하는 기능이 있나요?
예:
숫자가 다음과 같은 경우1432
그러면 이 함수는 "천사백삼십이"를 반환합니다.
$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
echo $f->format(1432);
그것은 "1,432"를 출력할 것입니다.
이 작업은 여러 가지 방법으로 수행할 수 있습니다. 여기서 언급한 두 가지 방법은 번호를 사용하여 수행할 수 있습니다.Martindilling 답변에 언급된 Formatter 클래스(php 버전 5.3.0 이상 및 PECL 확장 버전 1.0.0 이상인 경우) 또는 다음과 같은 사용자 정의 함수를 사용합니다.
function convertNumberToWord($num = false)
{
$num = str_replace(array(',', ' '), '' , trim($num));
if(! $num) {
return false;
}
$num = (int) $num;
$words = array();
$list1 = array('', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven',
'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'
);
$list2 = array('', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety', 'hundred');
$list3 = array('', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion',
'octillion', 'nonillion', 'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quattuordecillion',
'quindecillion', 'sexdecillion', 'septendecillion', 'octodecillion', 'novemdecillion', 'vigintillion'
);
$num_length = strlen($num);
$levels = (int) (($num_length + 2) / 3);
$max_length = $levels * 3;
$num = substr('00' . $num, -$max_length);
$num_levels = str_split($num, 3);
for ($i = 0; $i < count($num_levels); $i++) {
$levels--;
$hundreds = (int) ($num_levels[$i] / 100);
$hundreds = ($hundreds ? ' ' . $list1[$hundreds] . ' hundred' . ' ' : '');
$tens = (int) ($num_levels[$i] % 100);
$singles = '';
if ( $tens < 20 ) {
$tens = ($tens ? ' ' . $list1[$tens] . ' ' : '' );
} else {
$tens = (int)($tens / 10);
$tens = ' ' . $list2[$tens] . ' ';
$singles = (int) ($num_levels[$i] % 10);
$singles = ' ' . $list1[$singles] . ' ';
}
$words[] = $hundreds . $tens . $singles . ( ( $levels && ( int ) ( $num_levels[$i] ) ) ? ' ' . $list3[$levels] . ' ' : '' );
} //end for loop
$commas = count($words);
if ($commas > 1) {
$commas = $commas - 1;
}
return implode(' ', $words);
}
예, http://www.karlrixon.co.uk/writing/convert-numbers-to-words-with-php/ .
하지만 이것은 꽤 더러운 예입니다.번호를 사용하십시오.intl의 포맷터 (이것은 PHP 5.3에서 작동할 것입니다)
$f = new NumberFormatter("in", NumberFormatter::SPELLOUT);
echo $f->format(123456);
Yii2를 사용하는 경우 다음과 같이 간단하게 수행할 수 있습니다.
$sum = 100500;
echo Yii::$app->formatter->asSpellout($sum);
이 인쇄는 맞춤법으로 작성되었습니다.$sum
사용자의 앱 언어로.
문서 참조
언급URL : https://stackoverflow.com/questions/11500088/php-express-number-in-words
반응형
'IT' 카테고리의 다른 글
검색 뷰를 사용하여 Recycler 뷰를 필터링하는 방법 (0) | 2023.08.06 |
---|---|
타임리프를 사용하여 템플릿을 부모 레이아웃으로 래핑 (0) | 2023.08.06 |
정의된 간격으로 Android에서 실행 가능한 스레드를 실행하는 방법은 무엇입니까? (0) | 2023.08.06 |
Angular에서 뷰 공급자란 무엇입니까?b/w 제공업체와 view 제공업체의 차이점은 무엇입니까? (0) | 2023.08.01 |
Spring Webflux에서 JDBC 호출 차단 실행 (0) | 2023.08.01 |