<?php
/* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
function inclineWord( $number , $wordsArray ) {
$word1 = $wordsArray [ 1 ] ;
$word2 = $wordsArray [ 2 ] ;
$word5 = $wordsArray [ 5 ] ;
$last = $number % 10 ;
$lastTwo = $number % 100 ;
if ( $lastTwo > 10 and $lastTwo < 20 || $last == 0 || $last > 4 ) {
return $word5 ;
} elseif ( $last > 1 and $last < 5 ) {
return $word2 ;
} elseif ( $last == 1 ) {
return $word1 ;
}
}
/*
Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
если мы считаем число для мужского рода (один рубль),
и 1 — для женского (одна тысяча)
*/
function smallNumberToText( $number , $isFemale ) {
0 => 'ноль' , 10 => 'десять' , 100 => 'сто' ,
1 => 'один' , 11 => 'одиннадцать' , 20 => 'двадцать' , 200 => 'двести' ,
2 => 'два' , 12 => 'двенадцать' , 30 => 'тридцать' , 300 => 'триста' ,
3 => 'три' , 13 => 'тринадцать' , 40 => 'сорок' , 400 => 'четыреста' ,
4 => 'четыре' , 14 => 'четырнадцать' , 50 => 'пятьдесят' , 500 => 'пятьсот' ,
5 => 'пять' , 15 => 'пятнадцать' , 60 => 'шестьдесят' , 600 => 'шестьсот' ,
6 => 'шесть' , 16 => 'шестнадцать' , 70 => 'семьдесят' , 700 => 'семьсот' ,
7 => 'семь' , 17 => 'семнадцать' , 80 => 'восемьдесят' , 800 => 'восемьсот' ,
8 => 'восемь' , 18 => 'восемнадцать' , 90 => 'девяносто' , 900 => 'девятьсот' ,
9 => 'девять' , 19 => 'девятнадцать'
) ;
1 => 'одна' , 2 => 'две'
) ;
if ( $isFemale == 1 ) {
$spelling [ 1 ] = $femaleSpelling [ 1 ] ;
$spelling [ 2 ] = $femaleSpelling [ 2 ] ;
}
$tens = 0 ;
$one = $number % 1000 ;
$two = $number % 100 ;
$three = $number % 10 ;
$numberCount = 0 ;
if ( $two > 10 and $two < 20 ) {
$tens = 1 ;
}
$oneNew = $one - $two ;
$twoNew = $two - $three ;
if ( $number >= 100 ) {
$numberCount = 2 ;
$numberArray [ 0 ] = $spelling [ $oneNew ] ;
if ( $twoNew != 0 ) {
$numberArray [ 1 ] = $spelling [ $twoNew ] ;
}
$numberArray [ 2 ] = $spelling [ $three ] ;
} elseif ( $number < 100 and $number >= 10 ) {
$numberCount = 1 ;
$numberArray [ 0 ] = $spelling [ $twoNew ] ;
$numberArray [ 1 ] = $spelling [ $three ] ;
} elseif ( $number < 10 ) {
$numberArray [ 0 ] = $spelling [ $three ] ;
}
if ( $tens == 1 || $three == 0 ) {
unset ( $numberArray [ $numberCount ] ) ; $numberArray [ $numberCount - 1 ] = $spelling [ $two ] ;
}
$result = implode ( ' ' , $numberArray ) ; return $result ;
}
function numberToText( $number ) {
$isFemale = 0 ;
$rubles = array ( 1 => 'рубль' , 2 => 'рубля' , 5 => 'рублей' ) ; 1 => 'тысяча' ,
2 => 'тысячи' ,
5 => 'тысяч'
) ,
1 => 'миллион' ,
2 => 'миллиона' ,
5 => 'миллионов'
)
) ;
for ( $i = 1 ; $i <= $numbersInNumber ; $i ++ ) {
if ( $i == 1 ) {
$numberForWork = $number % 1000 ;
$wordAfterNumber = inclineWord( $numberForWork , $rubles ) ;
} else {
if ( $i == 2 ) {
$isFemale = 1 ;
} else {
$isFemale = 0 ;
}
$numberForWork = ( $number % ( pow ( 1000 , $i ) ) - $number % ( pow ( 1000 , $i - 1 ) ) ) / ( pow ( 1000 , $i - 1 ) ) ; $wordAfterNumber = inclineWord( $numberForWork , $bigNumbers [ $i ] ) ;
}
$wordNumber = smallNumberToText( $numberForWork , $isFemale ) ;
$smallNumberResult = $wordNumber . ' ' . $wordAfterNumber ;
$resultArray [ $i ] = $smallNumberResult ;
}
$result = implode ( ' ' , $resultArray ) ; return $result ;
}
/* Вызовем функцию несколько раз */
$text1 = numberToText( $amount1 ) ;
echo "На вашем счету {$text1} <br>" ;
$text2 = numberToText( $amount2 ) ;
echo "На вашем счету {$text2} <br>" ;
$text3 = numberToText( $amount3 ) ;
echo "На вашем счету {$text3} <br>" ;
$text4 = numberToText( $amount4 ) ;
echo "На вашем счету {$text4} <br>" ;
?>
PD9waHAKZXJyb3JfcmVwb3J0aW5nKC0xKTsKbWJfaW50ZXJuYWxfZW5jb2RpbmcoJ3V0Zi04Jyk7CiAKIAovKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidGD0Y4g0YfQuNGB0LvRgyDRhNC+0YDQvNGDINGB0LvQvtCy0LA6IDEg0YDRg9Cx0LvRjCwgMiDRgNGD0LHQu9GPLCA1INGA0YPQsdC70LXQuSAqLwpmdW5jdGlvbiBpbmNsaW5lV29yZCgkbnVtYmVyLCAkd29yZHNBcnJheSkgewoJJHdvcmQxID0gJHdvcmRzQXJyYXlbMV07Cgkkd29yZDIgPSAkd29yZHNBcnJheVsyXTsKCSR3b3JkNSA9ICR3b3Jkc0FycmF5WzVdOwogICAgJGxhc3QgPSAkbnVtYmVyJTEwOwoJJGxhc3RUd28gPSAkbnVtYmVyJTEwMDsKCWlmICgkbGFzdFR3byA+IDEwIGFuZCAkbGFzdFR3byA8MjAgfHwgJGxhc3QgPT0gMCB8fCAkbGFzdCA+IDQpIHsKCQlyZXR1cm4gJHdvcmQ1OwoJfSBlbHNlaWYgKCRsYXN0ID4gMSBhbmQgJGxhc3QgPCA1KSB7CgkJcmV0dXJuICR3b3JkMjsKCX0gZWxzZWlmICgkbGFzdCA9PSAxKSB7CgkJcmV0dXJuICR3b3JkMTsKCX0KfQogCi8qIAogICAg0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDRh9C40YHQu9CwINC+0YIgMCDQtNC+IDk5OSDQsiDRgtC10LrRgdGCLiDQn9Cw0YDQsNC80LXRgtGAICRpc0ZlbWFsZSDRgNCw0LLQtdC9INC90YPQu9GOLCAKICAgINC10YHQu9C4INC80Ysg0YHRh9C40YLQsNC10Lwg0YfQuNGB0LvQviDQtNC70Y8g0LzRg9C20YHQutC+0LPQviDRgNC+0LTQsCAo0L7QtNC40L0g0YDRg9Cx0LvRjCksIAogICAg0LggMSDigJQg0LTQu9GPINC20LXQvdGB0LrQvtCz0L4gKNC+0LTQvdCwINGC0YvRgdGP0YfQsCkgCiovCmZ1bmN0aW9uIHNtYWxsTnVtYmVyVG9UZXh0KCRudW1iZXIsICRpc0ZlbWFsZSkgewogCiAgICAkc3BlbGxpbmcgPSBhcnJheSgKICAgICAgICAwICAgPT4gICfQvdC+0LvRjCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwICA9PiAgJ9C00LXRgdGP0YLRjCcsICAgICAgIDEwMCA9PiAgJ9GB0YLQvicsCiAgICAgICAgMSAgID0+ICAn0L7QtNC40L0nLCAgICAgICAgIDExICA9PiAgJ9C+0LTQuNC90L3QsNC00YbQsNGC0YwnLCAgICAgIDIwICA9PiAgJ9C00LLQsNC00YbQsNGC0YwnLCAgICAgMjAwID0+ICAn0LTQstC10YHRgtC4JywKICAgICAgICAyICAgPT4gICfQtNCy0LAnLCAgICAgICAgICAxMiAgPT4gICfQtNCy0LXQvdCw0LTRhtCw0YLRjCcsICAgICAgIDMwICA9PiAgJ9GC0YDQuNC00YbQsNGC0YwnLCAgICAgMzAwID0+ICAn0YLRgNC40YHRgtCwJywKICAgICAgICAzICAgPT4gICfRgtGA0LgnLCAgICAgICAgICAxMyAgPT4gICfRgtGA0LjQvdCw0LTRhtCw0YLRjCcsICAgICAgIDQwICA9PiAgJ9GB0L7RgNC+0LonLCAgICAgICAgNDAwID0+ICAn0YfQtdGC0YvRgNC10YHRgtCwJywKICAgICAgICA0ICAgPT4gICfRh9C10YLRi9GA0LUnLCAgICAgICAxNCAgPT4gICfRh9C10YLRi9GA0L3QsNC00YbQsNGC0YwnLCAgICAgNTAgID0+ICAn0L/Rj9GC0YzQtNC10YHRj9GCJywgICAgNTAwID0+ICAn0L/Rj9GC0YzRgdC+0YInLAogICAgICAgIDUgICA9PiAgJ9C/0Y/RgtGMJywgICAgICAgICAxNSAgPT4gICfQv9GP0YLQvdCw0LTRhtCw0YLRjCcsICAgICAgIDYwICA9PiAgJ9GI0LXRgdGC0YzQtNC10YHRj9GCJywgICA2MDAgPT4gICfRiNC10YHRgtGM0YHQvtGCJywKICAgICAgICA2ICAgPT4gICfRiNC10YHRgtGMJywgICAgICAgIDE2ICA9PiAgJ9GI0LXRgdGC0L3QsNC00YbQsNGC0YwnLCAgICAgIDcwICA9PiAgJ9GB0LXQvNGM0LTQtdGB0Y/RgicsICAgIDcwMCA9PiAgJ9GB0LXQvNGM0YHQvtGCJywgICAgCiAgICAgICAgNyAgID0+ICAn0YHQtdC80YwnLCAgICAgICAgIDE3ICA9PiAgJ9GB0LXQvNC90LDQtNGG0LDRgtGMJywgICAgICAgODAgID0+ICAn0LLQvtGB0LXQvNGM0LTQtdGB0Y/RgicsICAgODAwID0+ICAn0LLQvtGB0LXQvNGM0YHQvtGCJywKICAgICAgICA4ICAgPT4gICfQstC+0YHQtdC80YwnLCAgICAgICAxOCAgPT4gICfQstC+0YHQtdC80L3QsNC00YbQsNGC0YwnLCAgICAgOTAgID0+ICAn0LTQtdCy0Y/QvdC+0YHRgtC+JywgICAgIDkwMCA9PiAgJ9C00LXQstGP0YLRjNGB0L7RgicsCiAgICAgICAgOSAgID0+ICAn0LTQtdCy0Y/RgtGMJywgICAgICAgMTkgID0+ICAn0LTQtdCy0Y/RgtC90LDQtNGG0LDRgtGMJyAgICAKICAgICk7CiAKICAgICRmZW1hbGVTcGVsbGluZyA9IGFycmF5KAogICAgICAgIDEgICA9PiAgJ9C+0LTQvdCwJywgICAgICAgIDIgICA9PiAgJ9C00LLQtScKICAgICk7CgkKCWlmICgkaXNGZW1hbGUgPT0gMSkgewoJCSRzcGVsbGluZ1sxXSA9ICRmZW1hbGVTcGVsbGluZ1sxXTsKCQkkc3BlbGxpbmdbMl0gPSAkZmVtYWxlU3BlbGxpbmdbMl07IAoJfQoJCgkkbnVtYmVyQXJyYXkgPSBhcnJheSgpOwoJCgkkdGVucyA9IDA7CiAgICAkb25lID0gJG51bWJlciAlIDEwMDA7CgkkdHdvID0gJG51bWJlciAlIDEwMDsKCSR0aHJlZSA9ICRudW1iZXIgJSAxMDsKCSRudW1iZXJDb3VudCA9IDA7CglpZiAoJHR3byA+MTAgYW5kICR0d28gPDIwKSB7CgkJJHRlbnMgPSAxOwoJfQoJJG9uZU5ldyA9ICRvbmUgLSAkdHdvOwoJJHR3b05ldyA9ICR0d28gLSAkdGhyZWU7CglpZiAoJG51bWJlciA+PSAxMDApIHsKCQkkbnVtYmVyQ291bnQgPSAyOwoJCSRudW1iZXJBcnJheVswXSA9ICRzcGVsbGluZ1skb25lTmV3XTsKCQlpZiAoJHR3b05ldyAhPSAwKSB7CgkJCSRudW1iZXJBcnJheVsxXSA9ICRzcGVsbGluZ1skdHdvTmV3XTsKCQl9CgkJJG51bWJlckFycmF5WzJdID0gJHNwZWxsaW5nWyR0aHJlZV07Cgl9IGVsc2VpZiAoJG51bWJlciA8MTAwIGFuZCAkbnVtYmVyID49IDEwKSB7CgkJJG51bWJlckNvdW50ID0gMTsKCQkkbnVtYmVyQXJyYXlbMF0gPSAkc3BlbGxpbmdbJHR3b05ld107CgkJJG51bWJlckFycmF5WzFdID0gJHNwZWxsaW5nWyR0aHJlZV07Cgl9IGVsc2VpZiAoJG51bWJlciA8MTApIHsKCQkkbnVtYmVyQXJyYXlbMF0gPSAkc3BlbGxpbmdbJHRocmVlXTsKCX0KCWlmICgkdGVucyA9PSAxIHx8ICR0aHJlZSA9PSAwKSB7CgkJdW5zZXQoJG51bWJlckFycmF5WyRudW1iZXJDb3VudF0pOwoJCSRudW1iZXJBcnJheVskbnVtYmVyQ291bnQgLSAxXSA9ICRzcGVsbGluZ1skdHdvXTsJCgl9CgkkcmVzdWx0ID0gaW1wbG9kZSgnICcsICRudW1iZXJBcnJheSk7CglyZXR1cm4gJHJlc3VsdDsKfQogCmZ1bmN0aW9uIG51bWJlclRvVGV4dCgkbnVtYmVyKSB7CgkkaXNGZW1hbGUgPSAwOwoJJHJ1YmxlcyA9IGFycmF5KDEgPT4gJ9GA0YPQsdC70YwnLCAyID0+ICfRgNGD0LHQu9GPJywgNSA9PiAn0YDRg9Cx0LvQtdC5Jyk7CgkkYmlnTnVtYmVycyA9IGFycmF5KAoJCQkJCTIgPT4gYXJyYXkoIAoJCQkJCQkJCTEgPT4gJ9GC0YvRgdGP0YfQsCcsCgkJCQkJCQkJMiA9PiAn0YLRi9GB0Y/Rh9C4JywKCQkJCQkJCQk1ID0+ICfRgtGL0YHRj9GHJwoJCQkJCQkJCSksCgkJCQkJMyA9PiBhcnJheSggCgkJCQkJCQkJMSA9PiAn0LzQuNC70LvQuNC+0L0nLAoJCQkJCQkJCTIgPT4gJ9C80LjQu9C70LjQvtC90LAnLAoJCQkJCQkJCTUgPT4gJ9C80LjQu9C70LjQvtC90L7QsicKCQkJCQkJCQkpCgkJCQkJCSk7CgkkcmVzdWx0QXJyYXkgPSBhcnJheSgpOwoJJG51bWJlcnNJbk51bWJlciA9IGNlaWwobWJfc3RybGVuKCRudW1iZXIpLzMpOwoJZm9yICgkaT0xOyAkaTw9JG51bWJlcnNJbk51bWJlcjsgJGkrKykgewoJCWlmICgkaSA9PSAxKXsKCQkJJG51bWJlckZvcldvcmsgPSAkbnVtYmVyJTEwMDA7CgkJCSR3b3JkQWZ0ZXJOdW1iZXIgPSBpbmNsaW5lV29yZCgkbnVtYmVyRm9yV29yaywgJHJ1Ymxlcyk7CgkJfSBlbHNlIHsKCQkJaWYgKCRpID09IDIpIHsKCQkJCSRpc0ZlbWFsZSA9IDE7CgkJCX0gZWxzZSB7CgkJCQkkaXNGZW1hbGUgPSAwOwoJCQl9CgkJCSRudW1iZXJGb3JXb3JrID0gKCRudW1iZXIlKHBvdygxMDAwLCAkaSkpLSRudW1iZXIlKHBvdygxMDAwLCAkaS0xKSkpLyhwb3coMTAwMCwgJGktMSkpOwoJCQkkd29yZEFmdGVyTnVtYmVyID0gaW5jbGluZVdvcmQoJG51bWJlckZvcldvcmssICRiaWdOdW1iZXJzWyRpXSk7CgkJfQoJCSR3b3JkTnVtYmVyID0gc21hbGxOdW1iZXJUb1RleHQoJG51bWJlckZvcldvcmssICRpc0ZlbWFsZSk7CgkJJHNtYWxsTnVtYmVyUmVzdWx0ID0gJHdvcmROdW1iZXIgLiAnICcgLiAkd29yZEFmdGVyTnVtYmVyOwoJCSRyZXN1bHRBcnJheVskaV0gPSAkc21hbGxOdW1iZXJSZXN1bHQ7Cgl9CglrcnNvcnQgKCRyZXN1bHRBcnJheSk7CgkkcmVzdWx0ID0gaW1wbG9kZSgnICcsICRyZXN1bHRBcnJheSk7CglyZXR1cm4gJHJlc3VsdDsKfQogCi8qINCS0YvQt9C+0LLQtdC8INGE0YPQvdC60YbQuNGOINC90LXRgdC60L7Qu9GM0LrQviDRgNCw0LcgKi8KJGFtb3VudDEgPSBtdF9yYW5kKDEsOTk5OTk5OTkpOwokdGV4dDEgPSBudW1iZXJUb1RleHQoJGFtb3VudDEpOwogCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDF9PGJyPiI7CgokYW1vdW50MiA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0MiA9IG51bWJlclRvVGV4dCgkYW1vdW50Mik7CiAKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0Mn08YnI+IjsKIAokYW1vdW50MyA9IG10X3JhbmQoMSw5OTk5OTk5OSk7ICAKJHRleHQzID0gbnVtYmVyVG9UZXh0KCRhbW91bnQzKTsKIAplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQzfTxicj4iOwogCiRhbW91bnQ0ID0gbXRfcmFuZCgxLDk5OTk5OTk5KTsKJHRleHQ0ID0gbnVtYmVyVG9UZXh0KCRhbW91bnQ0KTsKIAplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQ0fTxicj4iOwoKPz4=