<?php
// Staring straight up into the sky ... oh my my
/* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
function inclineWord( $number , $word1 , $word2 , $word5 ) {
$concurrence1 = '/[^123]1$|^1$/' ;
$concurrence2 = '/([^1][234]|^[234])$/' ;
return $word1 ;
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 ) ;
}
$forDecades = preg_match ( '/\d\d$/' , $number , $decades ) ; $forNumbers = preg_match ( '/\d$/' , $number , $numbers ) ; $intoWords = '' ;
if ( ( $number / 100 ) >= 1 ) {
$hundreds = $number / 100 ;
$roundHundreds = floor ( $hundreds ) * 100 ; $intoWords .= ' ' . $spelling [ $roundHundreds ] ;
}
$intoWords .= ' ' . $spelling [ $decades ] ;
$numbers = 0 ;
} elseif ( $decades / 10 >= 1 ) {
$decades = $decades / 10 ;
$roundDecades = floor ( $decades ) * 10 ; $intoWords .= ' ' . $spelling [ $roundDecades ] ;
}
if ( $numbers / 1 >= 1 ) {
$intoWords .= ' ' . $spelling [ $numbers ] ;
}
return $intoWords ;
}
function numberToText( $number ) {
$count = count ( $chunking ) ;
for ( $i = 0 ; $i < $count ; $i ++ ) {
}
if ( $number > 999 ) {
if ( $number > 999999 ) {
}
}
$total = ' ' ;
if ( $number > 999999 ) {
$total .= smallNumberToText( $imploded2 , null ) . ' ' . inclineWord( $imploded2 , 'миллион' , 'миллиона' , 'миллионов' ) ;
}
if ( $number > 999 && ! $imploded1 == 0 ) {
$total .= smallNumberToText( $imploded1 , $isFemale ) . ' ' . inclineWord( $imploded1 , 'тысяча' , 'тысячи' , 'тысяч' ) ;
}
if ( $imploded >= 0 ) {
$total .= smallNumberToText( $imploded , null ) . ' ' . inclineWord( $imploded , 'рубль' , 'рубля' , 'рублей' ) . " ({$number} )" ;
}
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+0LLQsDogMSDRgNGD0LHQu9GMLCAyINGA0YPQsdC70Y8sIDUg0YDRg9Cx0LvQtdC5ICovCmZ1bmN0aW9uIGluY2xpbmVXb3JkKCRudW1iZXIsICR3b3JkMSwgJHdvcmQyLCAkd29yZDUpIHsKCiAgICAkY29uY3VycmVuY2UxID0gJy9bXjEyM10xJHxeMSQvJzsKICAgICRjb25jdXJyZW5jZTIgPSAnLyhbXjFdWzIzNF18XlsyMzRdKSQvJzsKCiAgICBpZiAocHJlZ19tYXRjaCgkY29uY3VycmVuY2UxLCAkbnVtYmVyKSkgewogICAgICAgIHJldHVybiAkd29yZDE7CiAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgkY29uY3VycmVuY2UyLCAkbnVtYmVyKSkgewogICAgICAgIHJldHVybiAkd29yZDI7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAkd29yZDU7CiAgICB9Cn0KIAovKiAKICAgINCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0YfQuNGB0LvQsCDQvtGCIDAg0LTQviA5OTkg0LIg0YLQtdC60YHRgi4g0J/QsNGA0LDQvNC10YLRgCAkaXNGZW1hbGUg0YDQsNCy0LXQvSDQvdGD0LvRjiwgCiAgICDQtdGB0LvQuCDQvNGLINGB0YfQuNGC0LDQtdC8INGH0LjRgdC70L4g0LTQu9GPINC80YPQttGB0LrQvtCz0L4g0YDQvtC00LAgKNC+0LTQuNC9INGA0YPQsdC70YwpLCAKICAgINC4IDEg4oCUINC00LvRjyDQttC10L3RgdC60L7Qs9C+ICjQvtC00L3QsCDRgtGL0YHRj9GH0LApIAoqLwpmdW5jdGlvbiBzbWFsbE51bWJlclRvVGV4dCgkbnVtYmVyLCAkaXNGZW1hbGUpIHsKIAogICAgJHNwZWxsaW5nID0gYXJyYXkoCiAgICAgICAgMCAgID0+ICAn0L3QvtC70YwnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCAgPT4gICfQtNC10YHRj9GC0YwnLCAgICAgICAxMDAgPT4gICfRgdGC0L4nLAogICAgICAgIDEgICA9PiAgJ9C+0LTQuNC9JywgICAgICAgICAxMSAgPT4gICfQvtC00LjQvdC90LDQtNGG0LDRgtGMJywgICAgICAyMCAgPT4gICfQtNCy0LDQtNGG0LDRgtGMJywgICAgIDIwMCA9PiAgJ9C00LLQtdGB0YLQuCcsCiAgICAgICAgMiAgID0+ICAn0LTQstCwJywgICAgICAgICAgMTIgID0+ICAn0LTQstC10L3QsNC00YbQsNGC0YwnLCAgICAgICAzMCAgPT4gICfRgtGA0LjQtNGG0LDRgtGMJywgICAgIDMwMCA9PiAgJ9GC0YDQuNGB0YLQsCcsCiAgICAgICAgMyAgID0+ICAn0YLRgNC4JywgICAgICAgICAgMTMgID0+ICAn0YLRgNC40L3QsNC00YbQsNGC0YwnLCAgICAgICA0MCAgPT4gICfRgdC+0YDQvtC6JywgICAgICAgIDQwMCA9PiAgJ9GH0LXRgtGL0YDQtdGB0YLQsCcsCiAgICAgICAgNCAgID0+ICAn0YfQtdGC0YvRgNC1JywgICAgICAgMTQgID0+ICAn0YfQtdGC0YvRgNC90LDQtNGG0LDRgtGMJywgICAgIDUwICA9PiAgJ9C/0Y/RgtGM0LTQtdGB0Y/RgicsICAgIDUwMCA9PiAgJ9C/0Y/RgtGM0YHQvtGCJywKICAgICAgICA1ICAgPT4gICfQv9GP0YLRjCcsICAgICAgICAgMTUgID0+ICAn0L/Rj9GC0L3QsNC00YbQsNGC0YwnLCAgICAgICA2MCAgPT4gICfRiNC10YHRgtGM0LTQtdGB0Y/RgicsICAgNjAwID0+ICAn0YjQtdGB0YLRjNGB0L7RgicsCiAgICAgICAgNiAgID0+ICAn0YjQtdGB0YLRjCcsICAgICAgICAxNiAgPT4gICfRiNC10YHRgtC90LDQtNGG0LDRgtGMJywgICAgICA3MCAgPT4gICfRgdC10LzRjNC00LXRgdGP0YInLCAgICA3MDAgPT4gICfRgdC10LzRjNGB0L7RgicsICAgIAogICAgICAgIDcgICA9PiAgJ9GB0LXQvNGMJywgICAgICAgICAxNyAgPT4gICfRgdC10LzQvdCw0LTRhtCw0YLRjCcsICAgICAgIDgwICA9PiAgJ9Cy0L7RgdC10LzRjNC00LXRgdGP0YInLCAgIDgwMCA9PiAgJ9Cy0L7RgdC10LzRjNGB0L7RgicsCiAgICAgICAgOCAgID0+ICAn0LLQvtGB0LXQvNGMJywgICAgICAgMTggID0+ICAn0LLQvtGB0LXQvNC90LDQtNGG0LDRgtGMJywgICAgIDkwICA9PiAgJ9C00LXQstGP0L3QvtGB0YLQvicsICAgICA5MDAgPT4gICfQtNC10LLRj9GC0YzRgdC+0YInLAogICAgICAgIDkgICA9PiAgJ9C00LXQstGP0YLRjCcsICAgICAgIDE5ICA9PiAgJ9C00LXQstGP0YLQvdCw0LTRhtCw0YLRjCcgICAgCiAgICApOwogCiAgICAkZmVtYWxlU3BlbGxpbmcgPSBhcnJheSgKICAgICAgICAxICAgPT4gICfQvtC00L3QsCcsICAgICAgICAyICAgPT4gICfQtNCy0LUnCiAgICApOwogCiAgICBpZiAoJGlzRmVtYWxlID09IHRydWUpIHsKICAgICAgICAkc3BlbGxpbmcgPSBhcnJheV9yZXBsYWNlKCRzcGVsbGluZywgJGZlbWFsZVNwZWxsaW5nKTsKICAgIH0gCiAgICAkZm9yRGVjYWRlcyA9IHByZWdfbWF0Y2goJy9cZFxkJC8nLCAkbnVtYmVyLCAkZGVjYWRlcyk7CiAgICAkZGVjYWRlcyA9IGludHZhbChpbXBsb2RlKCcnLCAkZGVjYWRlcykpOwogICAgJGZvck51bWJlcnMgPSBwcmVnX21hdGNoKCcvXGQkLycsICRudW1iZXIsICRudW1iZXJzKTsKICAgICRudW1iZXJzID0gaW50dmFsKGltcGxvZGUoJycsICRudW1iZXJzKSk7CiAgICAkaW50b1dvcmRzID0gJyc7CgogICAgaWYgKCgkbnVtYmVyIC8gMTAwKSA+PSAxKSB7CiAgICAgICAgJGh1bmRyZWRzID0gJG51bWJlciAvIDEwMDsKICAgICAgICAkcm91bmRIdW5kcmVkcyA9IGZsb29yKCRodW5kcmVkcykgKiAxMDA7CiAgICAgICAgJGludG9Xb3JkcyAuPSAnICcuJHNwZWxsaW5nWyRyb3VuZEh1bmRyZWRzXTsKICAgIH0KCiAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkZGVjYWRlcywgJHNwZWxsaW5nKSA+PSAxMCAmJiAhJGRlY2FkZXMgPT0gMCkgewogICAgICAgICRpbnRvV29yZHMgLj0gJyAnLiRzcGVsbGluZ1skZGVjYWRlc107CiAgICAgICAgJG51bWJlcnMgPSAwOwogICAgfSBlbHNlaWYgKCRkZWNhZGVzIC8gMTAgPj0gMSkgewogICAgICAgICRkZWNhZGVzID0gJGRlY2FkZXMgLyAxMDsKICAgICAgICAkcm91bmREZWNhZGVzID0gZmxvb3IoJGRlY2FkZXMpICogMTA7CiAgICAgICAgJGludG9Xb3JkcyAuPSAnICcuJHNwZWxsaW5nWyRyb3VuZERlY2FkZXNdOwogICAgfQoKICAgIGlmICgkbnVtYmVycyAvIDEgPj0gMSkgewogICAgICAgICAgICAkaW50b1dvcmRzIC49ICcgJy4kc3BlbGxpbmdbJG51bWJlcnNdOwogICAgICAgIH0KCiAgICByZXR1cm4gJGludG9Xb3JkczsKfQogCmZ1bmN0aW9uIG51bWJlclRvVGV4dCgkbnVtYmVyKSB7CiAKICAgICRzcGxpdHRlZCA9IHByZWdfc3BsaXQoJy8vJywgJG51bWJlcik7CiAgICAgICAgJHJldmVyc2UgPSBhcnJheV9yZXZlcnNlKCRzcGxpdHRlZCk7CiAgICAgICAgJGxlZnREaWZmZXJlbmNlcyA9IGFycmF5X2RpZmYoJHJldmVyc2UsIGFycmF5KCcnKSk7CiAgICAgICAgJGNodW5raW5nID0gYXJyYXlfY2h1bmsoJGxlZnREaWZmZXJlbmNlcywgMyk7CiAgICAgICAgJGNvdW50ID0gY291bnQoJGNodW5raW5nKTsgICAKIAogICAgICAgIGZvciAoJGk9MDsgJGkgPCAkY291bnQ7ICRpKyspIHsgCiAgICAgICAgICAgJHJldmVyc2UgPSBhcnJheV9yZXZlcnNlKCRjaHVua2luZ1skaV0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRudW1iZXIgPiA5OTkpIHsKICAgICAgICAgICAgJGltcGxvZGVkMSA9IGludHZhbChpbXBsb2RlKCcnLCBhcnJheV9yZXZlcnNlKCRjaHVua2luZ1sxXSkpKTsKCiAgICAgICAgICAgIGlmICgkbnVtYmVyID4gOTk5OTk5KSB7CiAgICAgICAgICAgICAgICAkaW1wbG9kZWQyID0gaW50dmFsKGltcGxvZGUoJycsIGFycmF5X3JldmVyc2UoJGNodW5raW5nWzJdKSkpOwogICAgICAgICAgICB9IAogICAgICAgIH0KCiAgICAgICAgJGltcGxvZGVkID0gaW50dmFsKGltcGxvZGUoJycsIGFycmF5X3JldmVyc2UoJGNodW5raW5nWzBdKSkpOwogICAgICAgICR0b3RhbCA9ICcgJzsKCiAgICAgICAgaWYgKCRudW1iZXIgPiA5OTk5OTkpIHsKICAgICAgICAgICAgJHRvdGFsIC49IHNtYWxsTnVtYmVyVG9UZXh0KCRpbXBsb2RlZDIsIG51bGwpLicgJy5pbmNsaW5lV29yZCgkaW1wbG9kZWQyLCAn0LzQuNC70LvQuNC+0L0nLCAn0LzQuNC70LvQuNC+0L3QsCcsICfQvNC40LvQu9C40L7QvdC+0LInKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbnVtYmVyID4gOTk5ICYmICEkaW1wbG9kZWQxID09IDApIHsKICAgICAgICAgICAgJGlzRmVtYWxlID0gcHJlZ19tYXRjaCgiLygxfDIpJC8iLCAkaW1wbG9kZWQxKTsKICAgICAgICAgICAgJHRvdGFsIC49IHNtYWxsTnVtYmVyVG9UZXh0KCRpbXBsb2RlZDEsICRpc0ZlbWFsZSkuJyAnLmluY2xpbmVXb3JkKCRpbXBsb2RlZDEsICfRgtGL0YHRj9GH0LAnLCAn0YLRi9GB0Y/Rh9C4JywgJ9GC0YvRgdGP0YcnKTsKICAgICAgICB9CgogICAgICAgIGlmICgkaW1wbG9kZWQgPj0gMCkgewogICAgICAgICAgICAkdG90YWwgLj0gc21hbGxOdW1iZXJUb1RleHQoJGltcGxvZGVkLCBudWxsKS4nICcuaW5jbGluZVdvcmQoJGltcGxvZGVkLCAn0YDRg9Cx0LvRjCcsICfRgNGD0LHQu9GPJywgJ9GA0YPQsdC70LXQuScpLiIgKHskbnVtYmVyfSkiOwogICAgICAgIH0KCiAgcmV0dXJuICR0b3RhbDsKIAp9CiAKLyog0JLRi9C30L7QstC10Lwg0YTRg9C90LrRhtC40Y4g0L3QtdGB0LrQvtC70YzQutC+INGA0LDQtyAqLwokYW1vdW50MSA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0MSA9IG51bWJlclRvVGV4dCgkYW1vdW50MSk7CiAKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0MX1cbiI7CiAKJGFtb3VudDIgPSBtdF9yYW5kKDEsOTk5OTk5OTkpOwokdGV4dDIgPSBudW1iZXJUb1RleHQoJGFtb3VudDIpOwogCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDJ9XG4iOwogCiRhbW91bnQzID0gbXRfcmFuZCgxLDk5OTk5OTk5KTsKJHRleHQzID0gbnVtYmVyVG9UZXh0KCRhbW91bnQzKTsKIAplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQzfVxuIjsKIAokYW1vdW50NCA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0NCA9IG51bWJlclRvVGV4dCgkYW1vdW50NCk7CiAKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0NH1cbiI7CiA=