<?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])$/' ;
$concurrence5 = '/((1\d)|[05-9]|([02-9][05-9]))$/' ;
return $word1 ;
return $word2 ;
return $word5 ;
}
}
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 ) ;
}
$number = '' ;
return $number ;
}
if ( $number < 10 ) {
return $spelling [ $number ] ;
} else {
if ( $number > 10 ) {
$theLastNumber = preg_match ( "/\d$/" , $number , $theLastNumber1 ) ; $theLastNumber2 = $spelling [ implode ( '' , $theLastNumber1 ) ] ;
$theSecondNumber = preg_match ( "/\d\d$/" , $number , $theSecondNumber1 ) ;
if ( ( implode ( '' , $theSecondNumber1 ) ) > 9 ) { }
$theSecondNumber2 = $spelling [ implode ( '' , $godDamnIt1 ) ] ;
if ( ( implode ( '' , $theSecondNumber1 ) ) < 10 ) {
$theLastNumber2 = $spelling [ $imploded ] ;
$theSecondNumber2 = '' ;
}
$theSecondNumber2 = $spelling [ ( implode ( '' , $theSecondNumber1 ) ) ] ; $theLastNumber2 = '' ;
}
if ( $number > 99 ) {
$theSFirstNumber2 = $spelling [ implode ( '' , $godDamnIt2 ) ] ;
$ifMoreThanHundred = $theSFirstNumber2 . ' ' . $theSecondNumber2 . ' ' . $theLastNumber2 ;
return $ifMoreThanHundred ;
} else {
$ifLessThanHundred = $theSecondNumber2 . ' ' . $theLastNumber2 ;
return $ifLessThanHundred ;
}
}
}
}
function numberToText( $number ) {
if ( $number <= 999 ) {
$simpleNumbers = smallNumberToText( $number , null ) . ' ' . inclineWord( $number , ' рубль' , ' рубля' , ' рублей' ) ;
return $simpleNumbers ;
} else {
$count = count ( $chunking ) ;
for ( $i = 0 ; $i < $count ; $i ++ ) {
}
if ( $number > 999999 ) {
$total2 = smallNumberToText( $imploded3 , null ) . ' ' . inclineWord( $imploded3 , ' миллион' , ' миллиона' , ' миллионов' ) . ' ' . smallNumberToText( $imploded2 , $isFemale ) . ' ' . inclineWord( $imploded2 , ' тысяча' , ' тысячи' , ' тысяч' ) . ' ' . smallNumberToText( $imploded1 , null ) . ' ' . inclineWord( $number , ' рубль' , ' рубля' , ' рублей' ) . " ($number )" ;
return $total2 ;
} elseif ( $number > 999 ) {
$total1 = smallNumberToText( $imploded2 , $isFemale ) . ' ' . inclineWord( $imploded2 , ' тысяча' , ' тысячи' , ' тысяч' ) . ' ' . smallNumberToText( $imploded1 , null ) . ' ' . inclineWord( $number , ' рубль' , ' рубля' , ' рублей' ) . " ($number )" ;
return $total1 ;
}
}
}
/* Вызовем функцию несколько раз */
$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+0LLQsDogMSDRgNGD0LHQu9GMLCAyINGA0YPQsdC70Y8sIDUg0YDRg9Cx0LvQtdC5ICovCmZ1bmN0aW9uIGluY2xpbmVXb3JkKCRudW1iZXIsICR3b3JkMSwgJHdvcmQyLCAkd29yZDUpIHsKCiAgICAkY29uY3VycmVuY2UxID0gJy9bXjEyM10xJHxeMSQvJzsKICAgICRjb25jdXJyZW5jZTIgPSAnLyhbXjFdWzIzNF18XlsyMzRdKSQvJzsKICAgICRjb25jdXJyZW5jZTUgPSAnLygoMVxkKXxbMDUtOV18KFswMi05XVswNS05XSkpJC8nOwoKICAgIGlmIChwcmVnX21hdGNoKCcvXjAwMCQvJywgJG51bWJlcikpIHsKICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCRjb25jdXJyZW5jZTEsICRudW1iZXIpKSB7CiAgICAgICAgcmV0dXJuICR3b3JkMTsKICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCRjb25jdXJyZW5jZTIsICRudW1iZXIpKSB7CiAgICAgICAgcmV0dXJuICR3b3JkMjsKICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCRjb25jdXJyZW5jZTUsICRudW1iZXIpKSB7CiAgICAgICAgcmV0dXJuICR3b3JkNTsKICAgIH0KCn0KCmZ1bmN0aW9uIHNtYWxsTnVtYmVyVG9UZXh0KCRudW1iZXIsICRpc0ZlbWFsZSkgewoKICAgICRzcGVsbGluZyA9IGFycmF5KAogICAgICAgIDAgICA9PiAgJ9C90L7Qu9GMJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgID0+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+ICAn0LTQstC1JwogICAgKTsKCiAgICBpZiAoJGlzRmVtYWxlID09IHRydWUpIHsKICAgICAgICAkc3BlbGxpbmcgPSBhcnJheV9yZXBsYWNlKCRzcGVsbGluZywgJGZlbWFsZVNwZWxsaW5nKTsKICAgIH0gCgogICAgaWYgKHByZWdfbWF0Y2goJy9eMHsxLDJ9LycsICRudW1iZXIpICYmIHByZWdfbWF0Y2goJy9bXjBdLycsICRudW1iZXIpKSB7CiAgICAgICAgICAgICRudW1iZXIgPSBpbXBsb2RlKCcnLCBwcmVnX3NwbGl0KCIvXigwezEsMn0pLyIsICRudW1iZXIpKTsKICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvMDAwLycsICRudW1iZXIpKSB7CiAgICAgICAgJG51bWJlciA9ICcnOwogICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgfQoKICAgIGlmICgkbnVtYmVyIDwgMTApIHsKICAgICAgICByZXR1cm4gJHNwZWxsaW5nWyRudW1iZXJdOwogICAgfSBlbHNlIHsKCiAgICAgICAgaWYgKCRudW1iZXIgPiAxMCkgewogICAgICAgICAgICAkdGhlTGFzdE51bWJlciA9IHByZWdfbWF0Y2goIi9cZCQvIiwgJG51bWJlciwgJHRoZUxhc3ROdW1iZXIxKTsKICAgICAgICAgICAgJHRoZUxhc3ROdW1iZXIyID0gJHNwZWxsaW5nW2ltcGxvZGUoJycsICR0aGVMYXN0TnVtYmVyMSldOwoKICAgICAgICAgICAgJHRoZVNlY29uZE51bWJlciA9IHByZWdfbWF0Y2goIi9cZFxkJC8iLCAkbnVtYmVyLCAkdGhlU2Vjb25kTnVtYmVyMSk7CiAgICAgICAgICAgICRnb2REYW1uSXQxID0gcHJlZ19zcGxpdCgiL1xkJC8iLCBpbXBsb2RlKCcnLCAkdGhlU2Vjb25kTnVtYmVyMSkpOwoKICAgICAgICAgICAgaWYgKChpbXBsb2RlKCcnLCAkdGhlU2Vjb25kTnVtYmVyMSkpID4gOSkgewogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkZ29kRGFtbkl0MSwgIjAiKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoZVNlY29uZE51bWJlcjIgPSAkc3BlbGxpbmdbaW1wbG9kZSgnJywgJGdvZERhbW5JdDEpXTsKCiAgICAgICAgICAgIGlmICgoaW1wbG9kZSgnJywgJHRoZVNlY29uZE51bWJlcjEpKSA8IDEwKSB7CgogICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eMC8nLCBpbXBsb2RlKCcnLCAkdGhlU2Vjb25kTnVtYmVyMSkpKSB7CiAgICAgICAgICAgICAgICAgICAgJGltcGxvZGVkID0gaW1wbG9kZSgnJywgcHJlZ19zcGxpdCgnL14wLycsIGltcGxvZGUoJycsICR0aGVTZWNvbmROdW1iZXIxKSkpOwogICAgICAgICAgICAgICAgICAgICR0aGVMYXN0TnVtYmVyMiA9ICRzcGVsbGluZ1skaW1wbG9kZWRdOwogICAgICAgICAgICAgICAgICAgICR0aGVTZWNvbmROdW1iZXIyID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgoaW1wbG9kZSgnJywgJHRoZVNlY29uZE51bWJlcjEpKSA+IDEwICYmIGFycmF5X2tleV9leGlzdHMoKGltcGxvZGUoJycsICR0aGVTZWNvbmROdW1iZXIxKSksICRzcGVsbGluZykpIHsKICAgICAgICAgICAgICAgICR0aGVTZWNvbmROdW1iZXIyID0gJHNwZWxsaW5nWyhpbXBsb2RlKCcnLCAkdGhlU2Vjb25kTnVtYmVyMSkpXTsKICAgICAgICAgICAgICAgICR0aGVMYXN0TnVtYmVyMiA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG51bWJlciA+IDk5KSB7CiAgICAgICAgICAgICAgICAkZ29kRGFtbkl0MiA9IHByZWdfc3BsaXQoIi9cZFxkJC8iLCAkbnVtYmVyKTsKICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGdvZERhbW5JdDIsICIwIiwgIjAiKTsKICAgICAgICAgICAgICAgICR0aGVTRmlyc3ROdW1iZXIyID0gJHNwZWxsaW5nW2ltcGxvZGUoJycsICRnb2REYW1uSXQyKV07CgogICAgICAgICAgICAgICAgJGlmTW9yZVRoYW5IdW5kcmVkID0gJHRoZVNGaXJzdE51bWJlcjIuJyAnLiR0aGVTZWNvbmROdW1iZXIyLicgJy4kdGhlTGFzdE51bWJlcjI7CiAgICAgICAgICAgICAgICByZXR1cm4gJGlmTW9yZVRoYW5IdW5kcmVkOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGlmTGVzc1RoYW5IdW5kcmVkID0gJHRoZVNlY29uZE51bWJlcjIuJyAnLiR0aGVMYXN0TnVtYmVyMjsKICAgICAgICAgICAgICAgIHJldHVybiAkaWZMZXNzVGhhbkh1bmRyZWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0gICAgIAogCmZ1bmN0aW9uIG51bWJlclRvVGV4dCgkbnVtYmVyKSB7CiAgICAKICAgIGlmICgkbnVtYmVyIDw9IDk5OSkgewogICAgICAgICRzaW1wbGVOdW1iZXJzID0gc21hbGxOdW1iZXJUb1RleHQoJG51bWJlciwgbnVsbCkuJyAnLmluY2xpbmVXb3JkKCRudW1iZXIsICcg0YDRg9Cx0LvRjCcsICcg0YDRg9Cx0LvRjycsICcg0YDRg9Cx0LvQtdC5Jyk7CiAgICAgICAgcmV0dXJuICRzaW1wbGVOdW1iZXJzOwogICAgfSBlbHNlIHsKICAgICAgICAkbWF0Y2ggPSBwcmVnX3NwbGl0KCcvLycsICRudW1iZXIpOwogICAgICAgICRyZXZlcnNlID0gYXJyYXlfcmV2ZXJzZSgkbWF0Y2gpOwogICAgICAgICRsZWZ0RGlmZmVyZW5jZXMgPSBhcnJheV9kaWZmKCRyZXZlcnNlLCBhcnJheSgnJykpOwogICAgICAgICRjaHVua2luZyA9IGFycmF5X2NodW5rKCRsZWZ0RGlmZmVyZW5jZXMsIDMpOwogICAgICAgICRjb3VudCA9IGNvdW50KCRjaHVua2luZyk7ICAgCgogICAgICAgIGZvciAoJGk9MDsgJGkgPCAkY291bnQ7ICRpKyspIHsgCiAgICAgICAgICAgJHJldmVyc2UxID0gYXJyYXlfcmV2ZXJzZSgkY2h1bmtpbmdbJGldKTsKICAgICAgICB9CiAgICAgIAogICAgICAgICRpbXBsb2RlZDEgPSBpbXBsb2RlKCcnLCBhcnJheV9yZXZlcnNlKCRjaHVua2luZ1swXSkpOwogICAgICAgICRpbXBsb2RlZDIgPSBpbXBsb2RlKCcnLCBhcnJheV9yZXZlcnNlKCRjaHVua2luZ1sxXSkpOwoKICAgICAgICAkaXNGZW1hbGUgPSBwcmVnX21hdGNoKCIvKDF8MikkLyIsICRpbXBsb2RlZDIpOwoKICAgICAgICBpZiAoJG51bWJlciA+IDk5OTk5OSkgewogICAgICAgICAgICAkaW1wbG9kZWQzID0gaW1wbG9kZSgnJywgYXJyYXlfcmV2ZXJzZSgkY2h1bmtpbmdbMl0pKTsKICAgICAgICAgICAgJHRvdGFsMiA9IHNtYWxsTnVtYmVyVG9UZXh0KCRpbXBsb2RlZDMsIG51bGwpIC4nICcuIGluY2xpbmVXb3JkKCRpbXBsb2RlZDMsICcg0LzQuNC70LvQuNC+0L0nLCAnINC80LjQu9C70LjQvtC90LAnLCAnINC80LjQu9C70LjQvtC90L7QsicpIC4nICcuIHNtYWxsTnVtYmVyVG9UZXh0KCRpbXBsb2RlZDIsICRpc0ZlbWFsZSkgLicgJy4gaW5jbGluZVdvcmQoJGltcGxvZGVkMiwgJyDRgtGL0YHRj9GH0LAnLCAnINGC0YvRgdGP0YfQuCcsICcg0YLRi9GB0Y/RhycpIC4nICcuIHNtYWxsTnVtYmVyVG9UZXh0KCRpbXBsb2RlZDEsIG51bGwpIC4nICcuIGluY2xpbmVXb3JkKCRudW1iZXIsICcg0YDRg9Cx0LvRjCcsICcg0YDRg9Cx0LvRjycsICcg0YDRg9Cx0LvQtdC5JykuIiAoJG51bWJlcikiOwogICAgICAgICAgICByZXR1cm4gJHRvdGFsMjsKICAgICAgICB9ICBlbHNlaWYgKCRudW1iZXIgPiA5OTkpIHsKICAgICAgICAgICAgJHRvdGFsMSA9IHNtYWxsTnVtYmVyVG9UZXh0KCRpbXBsb2RlZDIsICRpc0ZlbWFsZSkgLicgJy4gaW5jbGluZVdvcmQoJGltcGxvZGVkMiwgJyDRgtGL0YHRj9GH0LAnLCAnINGC0YvRgdGP0YfQuCcsICcg0YLRi9GB0Y/RhycpIC4nICcuIHNtYWxsTnVtYmVyVG9UZXh0KCRpbXBsb2RlZDEsIG51bGwpIC4nICcuIGluY2xpbmVXb3JkKCRudW1iZXIsICcg0YDRg9Cx0LvRjCcsICcg0YDRg9Cx0LvRjycsICcg0YDRg9Cx0LvQtdC5JykuIiAoJG51bWJlcikiOwogICAgICAgICAgICByZXR1cm4gJHRvdGFsMTsKICAgICAgICB9CiAgICB9Cn0KIAovKiDQktGL0LfQvtCy0LXQvCDRhNGD0L3QutGG0LjRjiDQvdC10YHQutC+0LvRjNC60L4g0YDQsNC3ICovCiRhbW91bnQxID0gbXRfcmFuZCgxLDk5OTk5OTk5KTsKJHRleHQxID0gbnVtYmVyVG9UZXh0KCRhbW91bnQxKTsKIAplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQxfVxuIjsKIAokYW1vdW50MiA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0MiA9IG51bWJlclRvVGV4dCgkYW1vdW50Mik7CiAKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0Mn1cbiI7CiAKJGFtb3VudDMgPSBtdF9yYW5kKDEsOTk5OTk5OTkpOwokdGV4dDMgPSBudW1iZXJUb1RleHQoJGFtb3VudDMpOwogCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDN9XG4iOwogCiRhbW91bnQ0ID0gbXRfcmFuZCgxLDk5OTk5OTk5KTsKJHRleHQ0ID0gbnVtYmVyVG9UZXh0KCRhbW91bnQ0KTsKIAplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQ0fVxuIjs=