<?php
// Staring straight up into the sky ... oh my my
/* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
function inclineWord( $number , $word1 , $word2 , $word5 ) {
if ( $number % 100 >= 11 and $number % 100 <= 19 ) {
return $word5 ;
}
if ( $number % 10 == 1 ) {
return $word1 ;
} elseif ( $number % 10 >= 2 and $number % 10 <= 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 => 'две'
) ;
if ( $isFemale == true ) {
$spelling = array_replace( $spelling , $femaleSpelling ) ;
}
if ( $number >= 100 ) {
$hundreds = floor ( $number / 100 ) * 100 ; $decades = $number % 100 ;
$numbers = $decades % 10 ;
array_push ( $words , $spelling [ $hundreds ] , $spelling [ $decades ] ) ; } else {
$decades = $decades - $numbers ;
array_push ( $words , $spelling [ $hundreds ] , $spelling [ $decades ] , $spelling [ $numbers ] ) ; }
} elseif ( $number >= 10 ) {
$decades = floor ( $number / 10 ) * 10 ; $numbers = $number % 10 ;
} else {
array_push ( $words , $spelling [ $decades ] , $spelling [ $numbers ] ) ; }
} elseif ( $number >= 1 ) {
}
return $output ;
}
function numberToText( $number ) {
$numbers = $number ;
$thousandsForThousands = intval ( floor ( $number / 1000 ) ) ;
if ( $number > 999999 ) {
$thousandsForMillions = intval ( floor ( $number % 1000000 / 1000 ) ) ; $numbersForMillions = $number - ( $millions * 1000000 ) - ( $thousandsForMillions * 1000 ) ;
$numbers = $numbersForMillions ;
$thousandsForThousands = $thousandsForMillions ;
$addMilions = smallNumberToText( $millions , null ) . ' ' . inclineWord( $millions , 'миллион' , 'миллиона' , 'миллионов' ) ;
}
if ( $number > 999 ) {
$numbersForThousands = $number - ( $thousands * 1000 ) ;
if ( $number < 1000000 ) {
$numbers = $numbersForThousands ;
}
$addThousands = smallNumberToText( $thousandsForThousands , 1 ) . ' ' . inclineWord( $thousandsForThousands , 'тысяча' , 'тысячи' , 'тысяч' ) ;
if ( $thousandsForThousands != 0 ) {
}
}
if ( $number > 0 ) {
$addNumbers = smallNumberToText( $numbers , null ) . ' ' . inclineWord( $numbers , 'рубль' , 'рубля' , 'рублей' ) . " ({$number} )" ;
}
$total = implode ( ' ' , $constructing ) ; return $total ;
}
/* Вызовем функцию несколько раз */
$text1 = numberToText( $amount1 ) ;
echo "На вашем счету {$text1} \n " ;
$text2 = numberToText( $amount2 ) ;
echo "На вашем счету {$text2} \n " ;
$text3 = numberToText( $amount3 ) ;
echo "На вашем счету {$text3} \n " ;
$text4 = numberToText( $amount4 ) ;
echo "На вашем счету {$text4} \n " ;
PD9waHAKIAovLyBTdGFyaW5nIHN0cmFpZ2h0IHVwIGludG8gdGhlIHNreSAuLi4gb2ggbXkgbXkKZXJyb3JfcmVwb3J0aW5nKC0xKTsKIAogCi8qINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0YPRjiDRh9C40YHQu9GDINGE0L7RgNC80YMg0YHQu9C+0LLQsDogMSDRgNGD0LHQu9GMLCAyINGA0YPQsdC70Y8sIDUg0YDRg9Cx0LvQtdC5ICovCmZ1bmN0aW9uIGluY2xpbmVXb3JkKCRudW1iZXIsICR3b3JkMSwgJHdvcmQyLCAkd29yZDUpIHsKCiAgIGlmICgkbnVtYmVyICUgMTAwID49IDExIGFuZCAkbnVtYmVyICUgMTAwIDw9IDE5KSB7CiAgICAgICAgcmV0dXJuICR3b3JkNTsKICAgIH0KIAogICAgaWYgKCRudW1iZXIgJSAxMCA9PSAxKSB7CiAgICAgICAgcmV0dXJuICR3b3JkMTsKICAgIH0gZWxzZWlmICgkbnVtYmVyICUgMTAgPj0gMiBhbmQgJG51bWJlciAlIDEwIDw9IDQpIHsKICAgICAgICByZXR1cm4gJHdvcmQyOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gJHdvcmQ1OwogICAgfQp9CiAKLyogCiAgICDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINGH0LjRgdC70LAg0L7RgiAwINC00L4gOTk5INCyINGC0LXQutGB0YIuINCf0LDRgNCw0LzQtdGC0YAgJGlzRmVtYWxlINGA0LDQstC10L0g0L3Rg9C70Y4sIAogICAg0LXRgdC70Lgg0LzRiyDRgdGH0LjRgtCw0LXQvCDRh9C40YHQu9C+INC00LvRjyDQvNGD0LbRgdC60L7Qs9C+INGA0L7QtNCwICjQvtC00LjQvSDRgNGD0LHQu9GMKSwgCiAgICDQuCAxIOKAlCDQtNC70Y8g0LbQtdC90YHQutC+0LPQviAo0L7QtNC90LAg0YLRi9GB0Y/Rh9CwKSAKKi8KZnVuY3Rpb24gc21hbGxOdW1iZXJUb1RleHQoJG51bWJlciwgJGlzRmVtYWxlKSB7CiAKICAgICRzcGVsbGluZyA9IGFycmF5KAogICAgICAgIDAgICA9PiAgJ9C90L7Qu9GMJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgID0+ICAn0LTQtdGB0Y/RgtGMJywgICAgICAgMTAwID0+ICAn0YHRgtC+JywKICAgICAgICAxICAgPT4gICfQvtC00LjQvScsICAgICAgICAgMTEgID0+ICAn0L7QtNC40L3QvdCw0LTRhtCw0YLRjCcsICAgICAgMjAgID0+ICAn0LTQstCw0LTRhtCw0YLRjCcsICAgICAyMDAgPT4gICfQtNCy0LXRgdGC0LgnLAogICAgICAgIDIgICA9PiAgJ9C00LLQsCcsICAgICAgICAgIDEyICA9PiAgJ9C00LLQtdC90LDQtNGG0LDRgtGMJywgICAgICAgMzAgID0+ICAn0YLRgNC40LTRhtCw0YLRjCcsICAgICAzMDAgPT4gICfRgtGA0LjRgdGC0LAnLAogICAgICAgIDMgICA9PiAgJ9GC0YDQuCcsICAgICAgICAgIDEzICA9PiAgJ9GC0YDQuNC90LDQtNGG0LDRgtGMJywgICAgICAgNDAgID0+ICAn0YHQvtGA0L7QuicsICAgICAgICA0MDAgPT4gICfRh9C10YLRi9GA0LXRgdGC0LAnLAogICAgICAgIDQgICA9PiAgJ9GH0LXRgtGL0YDQtScsICAgICAgIDE0ICA9PiAgJ9GH0LXRgtGL0YDQvdCw0LTRhtCw0YLRjCcsICAgICA1MCAgPT4gICfQv9GP0YLRjNC00LXRgdGP0YInLCAgICA1MDAgPT4gICfQv9GP0YLRjNGB0L7RgicsCiAgICAgICAgNSAgID0+ICAn0L/Rj9GC0YwnLCAgICAgICAgIDE1ICA9PiAgJ9C/0Y/RgtC90LDQtNGG0LDRgtGMJywgICAgICAgNjAgID0+ICAn0YjQtdGB0YLRjNC00LXRgdGP0YInLCAgIDYwMCA9PiAgJ9GI0LXRgdGC0YzRgdC+0YInLAogICAgICAgIDYgICA9PiAgJ9GI0LXRgdGC0YwnLCAgICAgICAgMTYgID0+ICAn0YjQtdGB0YLQvdCw0LTRhtCw0YLRjCcsICAgICAgNzAgID0+ICAn0YHQtdC80YzQtNC10YHRj9GCJywgICAgNzAwID0+ICAn0YHQtdC80YzRgdC+0YInLCAgICAKICAgICAgICA3ICAgPT4gICfRgdC10LzRjCcsICAgICAgICAgMTcgID0+ICAn0YHQtdC80L3QsNC00YbQsNGC0YwnLCAgICAgICA4MCAgPT4gICfQstC+0YHQtdC80YzQtNC10YHRj9GCJywgICA4MDAgPT4gICfQstC+0YHQtdC80YzRgdC+0YInLAogICAgICAgIDggICA9PiAgJ9Cy0L7RgdC10LzRjCcsICAgICAgIDE4ICA9PiAgJ9Cy0L7RgdC10LzQvdCw0LTRhtCw0YLRjCcsICAgICA5MCAgPT4gICfQtNC10LLRj9C90L7RgdGC0L4nLCAgICAgOTAwID0+ICAn0LTQtdCy0Y/RgtGM0YHQvtGCJywKICAgICAgICA5ICAgPT4gICfQtNC10LLRj9GC0YwnLCAgICAgICAxOSAgPT4gICfQtNC10LLRj9GC0L3QsNC00YbQsNGC0YwnICAgIAogICAgKTsKIAogICAgJGZlbWFsZVNwZWxsaW5nID0gYXJyYXkoCiAgICAgICAgMSAgID0+ICAn0L7QtNC90LAnLCAgICAgICAgMiAgID0+ICAn0LTQstC1JwogICAgKTsKIAogICAgaWYgKCRpc0ZlbWFsZSA9PSB0cnVlKSB7CiAgICAgICAgJHNwZWxsaW5nID0gYXJyYXlfcmVwbGFjZSgkc3BlbGxpbmcsICRmZW1hbGVTcGVsbGluZyk7CiAgICB9CgogICAgJHdvcmRzID0gYXJyYXkoKTsKICAgICAgICAKICAgIGlmICgkbnVtYmVyID49IDEwMCkgewogICAgICAgICAgICAkaHVuZHJlZHMgPSBmbG9vcigkbnVtYmVyIC8gMTAwKSAqIDEwMDsKICAgICAgICAgICAgJGRlY2FkZXMgPSAkbnVtYmVyICUgMTAwOwogICAgICAgICAgICAkbnVtYmVycyA9ICRkZWNhZGVzICUgMTA7CgogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkbnVtYmVyLCAkc3BlbGxpbmcpKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCR3b3JkcywgJHNwZWxsaW5nWyRudW1iZXJdKTsKICAgICAgICAgICAgfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJGRlY2FkZXMsICRzcGVsbGluZykpIHsKICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJHdvcmRzLCAkc3BlbGxpbmdbJGh1bmRyZWRzXSwgJHNwZWxsaW5nWyRkZWNhZGVzXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZGVjYWRlcyA9ICRkZWNhZGVzIC0gJG51bWJlcnM7CiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCR3b3JkcywgJHNwZWxsaW5nWyRodW5kcmVkc10sICRzcGVsbGluZ1skZGVjYWRlc10sICRzcGVsbGluZ1skbnVtYmVyc10pOwogICAgICAgICAgICB9CiAgICB9IGVsc2VpZiAoJG51bWJlciA+PSAxMCkgewogICAgICAgICRkZWNhZGVzID0gZmxvb3IoJG51bWJlciAvIDEwKSAqIDEwOwogICAgICAgICRudW1iZXJzID0gJG51bWJlciAlIDEwOwogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRudW1iZXIsICRzcGVsbGluZykpIHsKICAgICAgICAgICAgYXJyYXlfcHVzaCgkd29yZHMsICRzcGVsbGluZ1skbnVtYmVyXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYXJyYXlfcHVzaCgkd29yZHMsICRzcGVsbGluZ1skZGVjYWRlc10sICRzcGVsbGluZ1skbnVtYmVyc10pOwogICAgICAgIH0KICAgIH0gZWxzZWlmICgkbnVtYmVyID49IDEpIHsKICAgICAgICBhcnJheV9wdXNoKCR3b3JkcywgJHNwZWxsaW5nWyRudW1iZXJdKTsKICAgIH0gICAgCgogICAgJG91dHB1dCA9IGltcGxvZGUoJyAnLCAkd29yZHMpOwogICAgcmV0dXJuICRvdXRwdXQ7Cn0KIApmdW5jdGlvbiBudW1iZXJUb1RleHQoJG51bWJlcikgewogIAogICAgJGNvbnN0cnVjdGluZyA9IGFycmF5KCk7CiAgICAkbnVtYmVycyA9ICRudW1iZXI7CiAgICAkdGhvdXNhbmRzRm9yVGhvdXNhbmRzID0gaW50dmFsKGZsb29yKCRudW1iZXIgLyAxMDAwKSk7CgogICAgaWYgKCRudW1iZXIgPiA5OTk5OTkpIHsKICAgICAgICAkbWlsbGlvbnMgPSBpbnR2YWwoZmxvb3IoJG51bWJlciAvIDEwMDAwMDApKTsKICAgICAgICAkdGhvdXNhbmRzRm9yTWlsbGlvbnMgPSBpbnR2YWwoZmxvb3IoJG51bWJlciAlIDEwMDAwMDAgLyAxMDAwKSk7CiAgICAgICAgJG51bWJlcnNGb3JNaWxsaW9ucyA9ICRudW1iZXIgLSAoJG1pbGxpb25zICogMTAwMDAwMCkgLSAoJHRob3VzYW5kc0Zvck1pbGxpb25zICogMTAwMCk7IAogICAgICAgICRudW1iZXJzID0gJG51bWJlcnNGb3JNaWxsaW9uczsKICAgICAgICAkdGhvdXNhbmRzRm9yVGhvdXNhbmRzID0gJHRob3VzYW5kc0Zvck1pbGxpb25zOwogICAgICAgICRhZGRNaWxpb25zID0gc21hbGxOdW1iZXJUb1RleHQoJG1pbGxpb25zLCBudWxsKS4nICcuaW5jbGluZVdvcmQoJG1pbGxpb25zLCAn0LzQuNC70LvQuNC+0L0nLCAn0LzQuNC70LvQuNC+0L3QsCcsICfQvNC40LvQu9C40L7QvdC+0LInKTsKICAgICAgICBhcnJheV9wdXNoKCRjb25zdHJ1Y3RpbmcsICRhZGRNaWxpb25zKTsKICAgIH0KCiAgICBpZiAoJG51bWJlciA+IDk5OSkgewogICAgICAgICR0aG91c2FuZHMgPSBpbnR2YWwoZmxvb3IoJG51bWJlciAvIDEwMDApKTsKICAgICAgICAkbnVtYmVyc0ZvclRob3VzYW5kcyA9ICRudW1iZXIgLSAoJHRob3VzYW5kcyAqIDEwMDApOwogICAgICAgIGlmICgkbnVtYmVyIDwgMTAwMDAwMCkgewogICAgICAgICAgICAkbnVtYmVycyA9ICRudW1iZXJzRm9yVGhvdXNhbmRzOwogICAgICAgIH0KICAgICAgICAkYWRkVGhvdXNhbmRzID0gc21hbGxOdW1iZXJUb1RleHQoJHRob3VzYW5kc0ZvclRob3VzYW5kcywgMSkuJyAnLmluY2xpbmVXb3JkKCR0aG91c2FuZHNGb3JUaG91c2FuZHMsICfRgtGL0YHRj9GH0LAnLCAn0YLRi9GB0Y/Rh9C4JywgJ9GC0YvRgdGP0YcnKTsKCiAgICAgICAgaWYgKCR0aG91c2FuZHNGb3JUaG91c2FuZHMgIT0gMCkgewogICAgICAgICAgICBhcnJheV9wdXNoKCRjb25zdHJ1Y3RpbmcsICRhZGRUaG91c2FuZHMpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJG51bWJlciA+IDApIHsKICAgICAgICAkYWRkTnVtYmVycyA9IHNtYWxsTnVtYmVyVG9UZXh0KCRudW1iZXJzLCBudWxsKS4nICcuaW5jbGluZVdvcmQoJG51bWJlcnMsICfRgNGD0LHQu9GMJywgJ9GA0YPQsdC70Y8nLCAn0YDRg9Cx0LvQtdC5JykuIiAoeyRudW1iZXJ9KSI7CiAgICAgICAgYXJyYXlfcHVzaCgkY29uc3RydWN0aW5nLCAkYWRkTnVtYmVycyk7CiAgICB9CgogICAgJHRvdGFsID0gaW1wbG9kZSgnICcsICRjb25zdHJ1Y3RpbmcpOwogICAgcmV0dXJuICR0b3RhbDsKfQogCi8qINCS0YvQt9C+0LLQtdC8INGE0YPQvdC60YbQuNGOINC90LXRgdC60L7Qu9GM0LrQviDRgNCw0LcgKi8KJGFtb3VudDEgPSBtdF9yYW5kKDEsOTk5OTk5OTkpOwokdGV4dDEgPSBudW1iZXJUb1RleHQoJGFtb3VudDEpOwogCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDF9XG4iOwogCiRhbW91bnQyID0gbXRfcmFuZCgxLDk5OTk5OTk5KTsKJHRleHQyID0gbnVtYmVyVG9UZXh0KCRhbW91bnQyKTsKIAplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQyfVxuIjsKIAokYW1vdW50MyA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0MyA9IG51bWJlclRvVGV4dCgkYW1vdW50Myk7CiAKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0M31cbiI7CiAKJGFtb3VudDQgPSBtdF9yYW5kKDEsOTk5OTk5OTkpOwokdGV4dDQgPSBudW1iZXJUb1RleHQoJGFtb3VudDQpOwogCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDR9XG4iOw==