<?php
// Staring straight up into the sky ... oh my my
/* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
function inclineWord( $number , $word1 , $word2 , $word5 ) {
$lastTwoDigits = $number % 100 ;
$lastDigit = $number % 100 % 10 ;
if ( $lastTwoDigits >= 11 && $lastTwoDigits <= 14 ) {
return $word5 ;
}
elseif ( $lastDigit == 1 ) {
return $word1 ;
}
elseif ( $lastDigit >= 2 && $lastDigit <= 4 ) {
return $word2 ;
}
else {
return $word5 ;
}
}
/*
Преобразует числа от 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 => 'две'
) ;
$lastTwoDigits = $number % 100 ;
$lastDigit = $lastTwoDigits % 10 ;
$hundreds = $number - $lastTwoDigits ;
$tens = $lastTwoDigits - ( $lastTwoDigits % 10 ) ;
if ( $number == 0 ) {
return $spelling [ $number ] ;
}
else {
if ( $hundreds != 0 ) {
$words [ ] = $spelling [ $hundreds ] ;
}
if ( $lastTwoDigits >= 10 && $lastTwoDigits <= 19 ) {
$words [ ] = $spelling [ $lastTwoDigits ] ;
}
else {
if ( $tens != 0 ) {
$words [ ] = $spelling [ $tens ] ;
}
if ( $isFemale && ( $lastDigit == 1 || $lastDigit == 2 ) ) {
$words [ ] = $femaleSpelling [ $lastDigit ] ;
}
else {
if ( $lastDigit != 0 ) {
$words [ ] = $spelling [ $lastDigit ] ;
}
}
}
}
return $result ;
}
function numberToText( $number ) {
$result = '' ;
$millions = ( integer) ( $number / 1000000 ) ;
$thousands = ( integer) ( $number / 1000 % 1000 ) ;
$units = $number % 1000 ;
$millionsWords = smallNumberToText( $millions , false ) . " " . inclineWord( $millions , "миллион " , "миллиона " , "миллионов " ) ;
$thousandsWords = smallNumberToText( $thousands , true ) . " " . inclineWord( $thousands , "тысяча " , "тысячи " , "тысяч " ) ;
$unitsWords = smallNumberToText( $units , false ) . " " . inclineWord( $units , "рубль " , "рубля " , "рублей " ) ;
if ( $millions == 0 ) {
} else {
$words [ ] = $millionsWords ;
}
if ( $thousands == 0 ) {
} else {
$words [ ] = $thousandsWords ;
}
if ( $units == 0 ) {
} else {
$words [ ] = $unitsWords ;
}
return $result ;
}
/* Вызовем функцию несколько раз */
$text1 = numberToText( $amount1 ) ;
echo "На вашем счету {$text1} \n " ;
$text2 = numberToText( $amount2 ) ;
echo "На вашем счету {$text2} \n " ;
$text3 = numberToText( $amount3 ) ;
echo "На вашем счету {$text3} \n " ;
$text4 = numberToText( $amount4 ) ;
echo "На вашем счету {$text4} \n " ;
$amount5 = 1002 ;
$text5 = numberToText( $amount5 ) ;
echo "На вашем счету {$text5} \n " ;
PD9waHAKCi8vIFN0YXJpbmcgc3RyYWlnaHQgdXAgaW50byB0aGUgc2t5IC4uLiBvaCBteSBteQplcnJvcl9yZXBvcnRpbmcoLTEpOwptYl9pbnRlcm5hbF9lbmNvZGluZygndXRmLTgnKTsKCgovKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidGD0Y4g0YfQuNGB0LvRgyDRhNC+0YDQvNGDINGB0LvQvtCy0LA6IDEg0YDRg9Cx0LvRjCwgMiDRgNGD0LHQu9GPLCA1INGA0YPQsdC70LXQuSAqLwpmdW5jdGlvbiBpbmNsaW5lV29yZCgkbnVtYmVyLCAkd29yZDEsICR3b3JkMiwgJHdvcmQ1KSB7CiAgICAKICAgICRsYXN0VHdvRGlnaXRzID0gJG51bWJlciAlIDEwMDsKICAgICRsYXN0RGlnaXQgPSAkbnVtYmVyICUgMTAwICUgMTA7CiAgICAKICAgIGlmKCRsYXN0VHdvRGlnaXRzID49IDExICYmICRsYXN0VHdvRGlnaXRzIDw9IDE0KSB7CiAgICAJcmV0dXJuICR3b3JkNTsKICAgIH0KICAgIGVsc2VpZigkbGFzdERpZ2l0ID09IDEpIHsKICAgIAlyZXR1cm4gJHdvcmQxOwogICAgfQogICAgZWxzZWlmKCRsYXN0RGlnaXQgPj0gMiAmJiAkbGFzdERpZ2l0IDw9IDQpIHsKICAgIAlyZXR1cm4gJHdvcmQyOwogICAgfQogICAgZWxzZSB7CiAgICAJcmV0dXJuICR3b3JkNTsKICAgIH0KfQoKLyogCiAgICDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINGH0LjRgdC70LAg0L7RgiAwINC00L4gOTk5INCyINGC0LXQutGB0YIuINCf0LDRgNCw0LzQtdGC0YAgJGlzRmVtYWxlINGA0LDQstC10L0g0L3Rg9C70Y4sIAogICAg0LXRgdC70Lgg0LzRiyDRgdGH0LjRgtCw0LXQvCDRh9C40YHQu9C+INC00LvRjyDQvNGD0LbRgdC60L7Qs9C+INGA0L7QtNCwICjQvtC00LjQvSDRgNGD0LHQu9GMKSwgCiAgICDQuCAxIOKAlCDQtNC70Y8g0LbQtdC90YHQutC+0LPQviAo0L7QtNC90LAg0YLRi9GB0Y/Rh9CwKSAKKi8KZnVuY3Rpb24gc21hbGxOdW1iZXJUb1RleHQoJG51bWJlciwgJGlzRmVtYWxlKSB7CgogICAgJHNwZWxsaW5nID0gYXJyYXkoCiAgICAgICAgMCAgID0+ICAn0L3QvtC70YwnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCAgPT4gICfQtNC10YHRj9GC0YwnLCAgICAgICAxMDAgPT4gICfRgdGC0L4nLAogICAgICAgIDEgICA9PiAgJ9C+0LTQuNC9JywgICAgICAgICAxMSAgPT4gICfQvtC00LjQvdC90LDQtNGG0LDRgtGMJywgICAgICAyMCAgPT4gICfQtNCy0LDQtNGG0LDRgtGMJywgICAgIDIwMCA9PiAgJ9C00LLQtdGB0YLQuCcsCiAgICAgICAgMiAgID0+ICAn0LTQstCwJywgICAgICAgICAgMTIgID0+ICAn0LTQstC10L3QsNC00YbQsNGC0YwnLCAgICAgICAzMCAgPT4gICfRgtGA0LjQtNGG0LDRgtGMJywgICAgIDMwMCA9PiAgJ9GC0YDQuNGB0YLQsCcsCiAgICAgICAgMyAgID0+ICAn0YLRgNC4JywgICAgICAgICAgMTMgID0+ICAn0YLRgNC40L3QsNC00YbQsNGC0YwnLCAgICAgICA0MCAgPT4gICfRgdC+0YDQvtC6JywgICAgICAgIDQwMCA9PiAgJ9GH0LXRgtGL0YDQtdGB0YLQsCcsCiAgICAgICAgNCAgID0+ICAn0YfQtdGC0YvRgNC1JywgICAgICAgMTQgID0+ICAn0YfQtdGC0YvRgNC90LDQtNGG0LDRgtGMJywgICAgIDUwICA9PiAgJ9C/0Y/RgtGM0LTQtdGB0Y/RgicsICAgIDUwMCA9PiAgJ9C/0Y/RgtGM0YHQvtGCJywKICAgICAgICA1ICAgPT4gICfQv9GP0YLRjCcsICAgICAgICAgMTUgID0+ICAn0L/Rj9GC0L3QsNC00YbQsNGC0YwnLCAgICAgICA2MCAgPT4gICfRiNC10YHRgtGM0LTQtdGB0Y/RgicsICAgNjAwID0+ICAn0YjQtdGB0YLRjNGB0L7RgicsCiAgICAgICAgNiAgID0+ICAn0YjQtdGB0YLRjCcsICAgICAgICAxNiAgPT4gICfRiNC10YHRgtC90LDQtNGG0LDRgtGMJywgICAgICA3MCAgPT4gICfRgdC10LzRjNC00LXRgdGP0YInLCAgICA3MDAgPT4gICfRgdC10LzRjNGB0L7RgicsICAgIAogICAgICAgIDcgICA9PiAgJ9GB0LXQvNGMJywgICAgICAgICAxNyAgPT4gICfRgdC10LzQvdCw0LTRhtCw0YLRjCcsICAgICAgIDgwICA9PiAgJ9Cy0L7RgdC10LzRjNC00LXRgdGP0YInLCAgIDgwMCA9PiAgJ9Cy0L7RgdC10LzRjNGB0L7RgicsCiAgICAgICAgOCAgID0+ICAn0LLQvtGB0LXQvNGMJywgICAgICAgMTggID0+ICAn0LLQvtGB0LXQvNC90LDQtNGG0LDRgtGMJywgICAgIDkwICA9PiAgJ9C00LXQstGP0L3QvtGB0YLQvicsICAgICA5MDAgPT4gICfQtNC10LLRj9GC0YzRgdC+0YInLAogICAgICAgIDkgICA9PiAgJ9C00LXQstGP0YLRjCcsICAgICAgIDE5ICA9PiAgJ9C00LXQstGP0YLQvdCw0LTRhtCw0YLRjCcgICAgCiAgICApOwogICAgCiAgICAkZmVtYWxlU3BlbGxpbmcgPSBhcnJheSgKICAgICAgICAxICAgPT4gICfQvtC00L3QsCcsICAgICAgICAyICAgPT4gICfQtNCy0LUnCiAgICApOwogICAgCiAgICAkd29yZHMgPSBhcnJheSgpOwogICAgJGxhc3RUd29EaWdpdHMgPSAkbnVtYmVyICUgMTAwOwogICAgJGxhc3REaWdpdCA9ICRsYXN0VHdvRGlnaXRzICUgMTA7CiAgICAkaHVuZHJlZHMgPSAkbnVtYmVyIC0gJGxhc3RUd29EaWdpdHM7CiAgICAkdGVucyA9ICRsYXN0VHdvRGlnaXRzIC0gKCRsYXN0VHdvRGlnaXRzICUgMTApOwogICAgCiAgICBpZigkbnVtYmVyID09IDApIHsKICAgIAlyZXR1cm4gJHNwZWxsaW5nWyRudW1iZXJdOwogICAgfSAKICAgIGVsc2UgewogICAgCWlmKCRodW5kcmVkcyAhPSAwKSB7CiAgICAJCSR3b3Jkc1tdID0gJHNwZWxsaW5nWyRodW5kcmVkc107CiAgICAJfQogICAgCWlmKCRsYXN0VHdvRGlnaXRzID49IDEwICYmICRsYXN0VHdvRGlnaXRzIDw9IDE5KSB7CiAgICAJCSR3b3Jkc1tdID0gJHNwZWxsaW5nWyRsYXN0VHdvRGlnaXRzXTsKICAgIAl9CiAgICAJZWxzZSB7CiAgICAJCWlmKCR0ZW5zICE9IDApIHsKICAgIAkJCSR3b3Jkc1tdID0gJHNwZWxsaW5nWyR0ZW5zXTsKICAgIAkJfQogICAgCQlpZigkaXNGZW1hbGUgJiYgKCRsYXN0RGlnaXQgPT0gMSB8fCAkbGFzdERpZ2l0ID09IDIpKSB7CiAgICAJCQkkd29yZHNbXSA9ICRmZW1hbGVTcGVsbGluZ1skbGFzdERpZ2l0XTsKICAgIAkJfQogICAgCQllbHNlIHsKICAgIAkJCWlmKCRsYXN0RGlnaXQgIT0gMCkgewogICAgCQkJCSR3b3Jkc1tdID0gJHNwZWxsaW5nWyRsYXN0RGlnaXRdOwogICAgCQkJfQogICAgCQl9CiAgICAJfQogICAgfQogICAgJHJlc3VsdCA9IGltcGxvZGUoIiAiLCAkd29yZHMpOwogICAgcmV0dXJuICRyZXN1bHQ7Cn0KCmZ1bmN0aW9uIG51bWJlclRvVGV4dCgkbnVtYmVyKSB7CiAgICAKICAkcmVzdWx0ID0gJyc7CiAgJHdvcmRzID0gYXJyYXkoKTsKICAkbWlsbGlvbnMgPSAoaW50ZWdlcikoJG51bWJlciAvIDEwMDAwMDApOwogICR0aG91c2FuZHMgPSAoaW50ZWdlcikoJG51bWJlciAvIDEwMDAgJSAxMDAwKTsKICAkdW5pdHMgPSAkbnVtYmVyICUgMTAwMDsKICAkbWlsbGlvbnNXb3JkcyA9IHNtYWxsTnVtYmVyVG9UZXh0KCRtaWxsaW9ucywgZmFsc2UpLiIgIi5pbmNsaW5lV29yZCgkbWlsbGlvbnMsICLQvNC40LvQu9C40L7QvSAiLCLQvNC40LvQu9C40L7QvdCwICIsItC80LjQu9C70LjQvtC90L7QsiAiKTsKICAkdGhvdXNhbmRzV29yZHMgPSBzbWFsbE51bWJlclRvVGV4dCgkdGhvdXNhbmRzLCB0cnVlKS4iICIuaW5jbGluZVdvcmQoJHRob3VzYW5kcywgItGC0YvRgdGP0YfQsCAiLCAi0YLRi9GB0Y/Rh9C4ICIsICLRgtGL0YHRj9GHICIpOwogICR1bml0c1dvcmRzID0gc21hbGxOdW1iZXJUb1RleHQoJHVuaXRzLCBmYWxzZSkuIiAiLmluY2xpbmVXb3JkKCR1bml0cywgItGA0YPQsdC70YwgIiwgItGA0YPQsdC70Y8gIiwgItGA0YPQsdC70LXQuSAiKTsKICAKICBpZigkbWlsbGlvbnMgPT0gMCkgewogIH1lbHNlewogIAkkd29yZHNbXSA9ICRtaWxsaW9uc1dvcmRzOwogIH0KICBpZigkdGhvdXNhbmRzID09IDApIHsKICB9ZWxzZXsKICAJJHdvcmRzW10gPSAkdGhvdXNhbmRzV29yZHM7CiAgfQogIGlmKCR1bml0cyA9PSAwKSB7CiAgfWVsc2V7CiAgCSR3b3Jkc1tdID0gJHVuaXRzV29yZHM7CiAgfQogICRyZXN1bHQgPSBpbXBsb2RlKCR3b3Jkcyk7CiAgcmV0dXJuICRyZXN1bHQ7Cn0KCi8qINCS0YvQt9C+0LLQtdC8INGE0YPQvdC60YbQuNGOINC90LXRgdC60L7Qu9GM0LrQviDRgNCw0LcgKi8KJGFtb3VudDEgPSBtdF9yYW5kKDEsOTk5OTk5OTk5KTsKJHRleHQxID0gbnVtYmVyVG9UZXh0KCRhbW91bnQxKTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDF9XG4iOwoKJGFtb3VudDIgPSBtdF9yYW5kKDEsOTk5OTk5OTk5KTsKJHRleHQyID0gbnVtYmVyVG9UZXh0KCRhbW91bnQyKTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDJ9XG4iOwoKJGFtb3VudDMgPSBtdF9yYW5kKDEsOTk5OTk5OTk5KTsKJHRleHQzID0gbnVtYmVyVG9UZXh0KCRhbW91bnQzKTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDN9XG4iOwoKJGFtb3VudDQgPSBtdF9yYW5kKDEsOTk5OTk5OTk5KTsKJHRleHQ0ID0gbnVtYmVyVG9UZXh0KCRhbW91bnQ0KTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDR9XG4iOwoKJGFtb3VudDUgPSAxMDAyOwokdGV4dDUgPSBudW1iZXJUb1RleHQoJGFtb3VudDUpOwoKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0NX1cbiI7