<?php
// Staring straight up into the sky ... oh my my
/* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
function inclineWord( $number , $word1 , $word2 , $word5 ) {
$numLastDigits = $number % 100 ;
if ( ( $numLastDigits % 10 ) == 1 ) {
return $word1 ;
} elseif ( ( $numLastDigits % 10 ) > 1 && ( $numLastDigits % 10 ) < 5 ) {
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 => 'две'
) ;
if ( $number == 0 ) {
return $spelling [ 0 ] ;
}
if ( $number < 20 ) {
if ( $isFemale && $number <= 2 ) {
$result [ ] = $femaleSpelling [ $number ] ;
} else {
$result [ ] = $spelling [ $number ] ;
}
} else {
$numberLastDigit = $number % 10 ;
$numberTens = $number % 100 ;
$numberTensRound = $numberTens - $numberLastDigit ;
$numberHunsRound = $number - $numberTens ;
if ( $number >= 20 && $number < 100 ) {
$result [ ] = $spelling [ $numberTensRound ] ;
if ( $numberLastDigit != 0 ) {
if ( $isFemale && $numberLastDigit <= 2 ) {
$result [ ] = $femaleSpelling [ $numberLastDigit ] ;
} else {
$result [ ] = $spelling [ $numberLastDigit ] ;
}
}
} elseif ( $number >= 100 ) {
$result [ ] = $spelling [ $numberHunsRound ] ;
if ( $numberTens != 0 ) {
if ( $numberTens < 20 || ( $numberTens % 10 ) == 0 ) {
$result [ ] = $spelling [ $numberTens ] ;
} else {
$result [ ] = $spelling [ $numberTensRound ] ;
if ( $isFemale && $numberLastDigit <= 2 ) {
$result [ ] = $femaleSpelling [ $numberLastDigit ] ;
} else {
$result [ ] = $spelling [ $numberLastDigit ] ;
}
}
}
}
}
return $result ;
}
function numberToText( $number ) {
$i = count ( $numberSplit ) ;
foreach ( $numberSplit as $num ) {
$fem = 0 ;
if ( $i == 3 ) {
$add = inclineWord( $num , "миллион" , "миллиона" , "миллионов" ) ;
} elseif ( $i == 2 ) {
$fem = 1 ;
$add = inclineWord( $num , "тысяча" , "тысячи" , "тысяч" ) ;
} else {
$add = "($number ) " . inclineWord( $num , "рубль" , "рубля" , "рублей" ) ;
}
$i --;
$result [ ] = smallNumberToText( $num , $fem ) . " $add " ;
}
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 " ;
echo "На вашем счету " . numberToText( 0 ) ;
PD9waHAKCi8vIFN0YXJpbmcgc3RyYWlnaHQgdXAgaW50byB0aGUgc2t5IC4uLiBvaCBteSBteQplcnJvcl9yZXBvcnRpbmcoLTEpOwptYl9pbnRlcm5hbF9lbmNvZGluZygndXRmLTgnKTsKCi8qINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0YPRjiDRh9C40YHQu9GDINGE0L7RgNC80YMg0YHQu9C+0LLQsDogMSDRgNGD0LHQu9GMLCAyINGA0YPQsdC70Y8sIDUg0YDRg9Cx0LvQtdC5ICovCmZ1bmN0aW9uIGluY2xpbmVXb3JkKCRudW1iZXIsICR3b3JkMSwgJHdvcmQyLCAkd29yZDUpIHsKICAgICRudW1MYXN0RGlnaXRzID0gJG51bWJlciAlIDEwMDsKICAgIGlmICgoJG51bUxhc3REaWdpdHMgJSAxMCkgPT0gMSkgewogICAgICAgIHJldHVybiAkd29yZDE7CiAgICB9IGVsc2VpZiAoKCRudW1MYXN0RGlnaXRzICUgMTApID4gMSAmJiAoJG51bUxhc3REaWdpdHMgJSAxMCkgPCA1KSB7CiAgICAgICAgcmV0dXJuICR3b3JkMjsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICR3b3JkNTsKICAgIH0KfQoKLyogCiAgICDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINGH0LjRgdC70LAg0L7RgiAwINC00L4gOTk5INCyINGC0LXQutGB0YIuINCf0LDRgNCw0LzQtdGC0YAgJGlzRmVtYWxlINGA0LDQstC10L0g0L3Rg9C70Y4sIAogICAg0LXRgdC70Lgg0LzRiyDRgdGH0LjRgtCw0LXQvCDRh9C40YHQu9C+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+0YInLAogICAgICAgIDkgICA9PiAgJ9C00LXQstGP0YLRjCcsICAgICAgIDE5ICA9PiAgJ9C00LXQstGP0YLQvdCw0LTRhtCw0YLRjCcgICAgCiAgICApOwogICAgCiAgICAkZmVtYWxlU3BlbGxpbmcgPSBhcnJheSgKICAgICAgICAxICAgPT4gICfQvtC00L3QsCcsICAgICAgICAyICAgPT4gICfQtNCy0LUnCiAgICApOwoKICAgICRudW1iZXIgPSBpbnR2YWwoJG51bWJlcik7CgogICAgJHJlc3VsdCA9IGFycmF5KCk7CgogICAgaWYgKCRudW1iZXIgPT0gMCkgewogICAgICAgIHJldHVybiAkc3BlbGxpbmdbMF07CiAgICB9CgogICAgaWYgKCRudW1iZXIgPCAyMCkgewogICAgICAgIGlmICgkaXNGZW1hbGUgJiYgJG51bWJlciA8PSAyKSB7CiAgICAgICAgJHJlc3VsdFtdID0gJGZlbWFsZVNwZWxsaW5nWyRudW1iZXJdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgJHJlc3VsdFtdID0gJHNwZWxsaW5nWyRudW1iZXJdOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRudW1iZXJMYXN0RGlnaXQgPSAkbnVtYmVyICUgMTA7CiAgICAgICAgICAgICRudW1iZXJUZW5zID0gJG51bWJlciAlIDEwMDsKCiAgICAgICAgICAgICRudW1iZXJUZW5zUm91bmQgPSAkbnVtYmVyVGVucyAtICRudW1iZXJMYXN0RGlnaXQ7CiAgICAgICAgICAgICRudW1iZXJIdW5zUm91bmQgPSAkbnVtYmVyIC0gJG51bWJlclRlbnM7CgogICAgICAgIGlmICgkbnVtYmVyID49IDIwICYmICRudW1iZXIgPCAxMDApIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJHNwZWxsaW5nWyRudW1iZXJUZW5zUm91bmRdOwoKICAgICAgICAgICAgaWYgKCRudW1iZXJMYXN0RGlnaXQgIT0gMCkgewogICAgICAgICAgICAgICAgaWYgKCRpc0ZlbWFsZSAmJiAkbnVtYmVyTGFzdERpZ2l0IDw9IDIpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICRmZW1hbGVTcGVsbGluZ1skbnVtYmVyTGFzdERpZ2l0XTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkc3BlbGxpbmdbJG51bWJlckxhc3REaWdpdF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAKICAgICAgICB9IGVsc2VpZiAoJG51bWJlciA+PSAxMDApIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJHNwZWxsaW5nWyRudW1iZXJIdW5zUm91bmRdOwogICAgICAgICAgICBpZiAoJG51bWJlclRlbnMgIT0gMCApIHsKICAgICAgICAgICAgICAgIGlmICgkbnVtYmVyVGVucyA8IDIwIHx8ICgkbnVtYmVyVGVucyAlIDEwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJHNwZWxsaW5nWyRudW1iZXJUZW5zXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJHNwZWxsaW5nWyRudW1iZXJUZW5zUm91bmRdOwogICAgICAgICAgICAgICAgICAgIGlmICgkaXNGZW1hbGUgJiYgJG51bWJlckxhc3REaWdpdCA8PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJGZlbWFsZVNwZWxsaW5nWyRudW1iZXJMYXN0RGlnaXRdOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJHNwZWxsaW5nWyRudW1iZXJMYXN0RGlnaXRdOwogICAgICAgICAgICAgICAgICAgIH0gIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgJHJlc3VsdCA9IGltcGxvZGUoIiAiLCAkcmVzdWx0KTsKICAgIHJldHVybiAkcmVzdWx0Owp9CgpmdW5jdGlvbiBudW1iZXJUb1RleHQoJG51bWJlcikgewogICAgJG51bWJlciA9IG51bWJlcl9mb3JtYXQoJG51bWJlcik7CiAgICAkbnVtYmVyU3BsaXQgPSBwcmVnX3NwbGl0KCcvLC8nLCAkbnVtYmVyKTsKCiAgICAkaSA9IGNvdW50KCRudW1iZXJTcGxpdCk7CgogICAgJHJlc3VsdCA9IGFycmF5KCk7CgogICAgZm9yZWFjaCgkbnVtYmVyU3BsaXQgYXMgJG51bSkgewogICAgICAgICRmZW0gPSAwOwoKICAgICAgICBpZiAoJGkgPT0gMykgewogICAgICAgICAgICAkYWRkID0gaW5jbGluZVdvcmQoJG51bSwgItC80LjQu9C70LjQvtC9IiwgItC80LjQu9C70LjQvtC90LAiLCAi0LzQuNC70LvQuNC+0L3QvtCyIik7CiAgICAgICAgfSBlbHNlaWYgKCRpID09IDIpIHsKICAgICAgICAgICAgJGZlbSA9IDE7CiAgICAgICAgICAgICRhZGQgPSBpbmNsaW5lV29yZCgkbnVtLCAi0YLRi9GB0Y/Rh9CwIiwgItGC0YvRgdGP0YfQuCIsICLRgtGL0YHRj9GHIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGFkZCA9ICIoJG51bWJlcikgIiAuIGluY2xpbmVXb3JkKCRudW0sICLRgNGD0LHQu9GMIiwgItGA0YPQsdC70Y8iLCAi0YDRg9Cx0LvQtdC5Iik7CiAgICAgICAgfQoKICAgICAgICAkaS0tOwoKICAgICAgICAkcmVzdWx0W10gPSBzbWFsbE51bWJlclRvVGV4dCgkbnVtLCAkZmVtKSAuICIgJGFkZCI7CgoKICAgIH0KICAgICRyZXN1bHQgPSBpbXBsb2RlKCIgIiwgJHJlc3VsdCk7CiAgICByZXR1cm4gJHJlc3VsdDsKfQoKLyog0JLRi9C30L7QstC10Lwg0YTRg9C90LrRhtC40Y4g0L3QtdGB0LrQvtC70YzQutC+INGA0LDQtyAqLwokYW1vdW50MSA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0MSA9IG51bWJlclRvVGV4dCgkYW1vdW50MSk7CgplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQxfVxuIjsKCiRhbW91bnQyID0gbXRfcmFuZCgxLDk5OTk5OTk5KTsKJHRleHQyID0gbnVtYmVyVG9UZXh0KCRhbW91bnQyKTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDJ9XG4iOwoKJGFtb3VudDMgPSBtdF9yYW5kKDEsOTk5OTk5OTkpOwokdGV4dDMgPSBudW1iZXJUb1RleHQoJGFtb3VudDMpOwoKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0M31cbiI7CgokYW1vdW50NCA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0NCA9IG51bWJlclRvVGV4dCgkYW1vdW50NCk7CgplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQ0fVxuIjsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDICIgLm51bWJlclRvVGV4dCgwKTs=