<?php
$input = "110022" ;
$counter = $input ;
$male_or_female_unit = 1 ;
$number = '' ;
$digit_1 = '' ;
$digit_2 = '' ;
$digitTotal = '' ;
$output = '' ;
function writeNumber( ) {
global $number , $input ;
$number = $input ;
} elseif ( ( strlen ( $input ) % 3 ) == 0 ) { $number = $input [ 0 ] . $input [ 1 ] . $input [ 2 ] ;
} else {
}
}
function insertDigit( ) {
global $output , $digitTotal , $digit_1 , $digit_2 , $number ;
$digitArray_1 = array ( "/0a$/" , "/0b$/" , "/0c$/" , "/1a$/" , "/1b$/" , "/1c$/" , "/2a$/" , "/2b$/" , "/2c$/" , "/3a$/" , "/3b$/" , "/3c$/" ) ; $digitArray_2 = array ( "рубль" , "рубля" , "рублей" , "тысяча" , "тысячи" , "тысяч" , "миллион" , "миллиона" , "миллионов" , "миллиард" , "миллиарда" , "миллиардов" ) ; $digitTotal = $digit_1 . $digit_2 ;
if ( ( $number == "000" ) && ( $digit_1 != "0" ) ) {
$digitTotal = "" ;
}
$output = $output . " " . $digitTotal ;
$output = preg_replace ( $digitArray_1 , $digitArray_2 , $output ) ; }
function checkDigit( ) {
global $digit_1 , $input , $male_or_female_unit ;
if ( ( 1 <= strlen ( $input ) ) && ( 3 >= strlen ( $input ) ) ) { //0 - первая тройка, 1 - тысячи, 2 - мульёны, 3 - мульярды $digit_1 = "0" ;
$digit_1 = "1" ;
$male_or_female_unit = 0 ;
$digit_1 = "2" ;
} elseif ( ( 10 <= strlen ( $input ) ) && ( 12 >= strlen ( $input ) ) ) { $digit_1 = "3" ;
}
}
function subnumber( $x ) {
global $digit_2 ;
if ( substr ( $x , - 2 , 2 ) == "00" ) { $digit_2 = "c" ;
} elseif ( $x [ - 1 ] == "1" ) {
$digit_2 = "a" ;
} elseif ( ( $x [ - 1 ] == "2" ) || ( $x [ - 1 ] == "3" ) || ( $x [ - 1 ] == "4" ) ) {
$digit_2 = "b" ;
} else {
$digit_2 = "c" ;
}
hundreds( $x ) ;
( preg_match ( '/(?<=\d)[1]\d/' , $x ) ) ? ifTeenDecimals
( $x ) : ifNotTeenDecimals
( $x ) ; units( $x ) ;
} else {
( preg_match ( '/[1]\d/' , $x ) ) ? ifTeenDecimals
( $x ) : ifNotTeenDecimals
( $x ) ; }
}
function hundreds( $x ) {
global $output ;
$numberReplace = array ( "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ) ; $hundredWords = array ( "" , "cто" , "двести" , "триста" , "четыреста" , "пятьсот" , "шестьсот" , "семьсот" , "восемьсот" , "девятьсот" ) ; $output = $output . str_replace ( $numberReplace , $hundredWords , $x [ 0 ] ) . " " ; return $output ;
}
function ifTeenDecimals( $x ) {
global $output , $digit_2 ;
$numberReplace = array ( "10" , "11" , "12" , "13" , "14" , "15" , "16" , "17" , "18" , "19" ) ; $decimalWords = array ( "десять" , "одиннадцать" , "двенадцать" , "тринадцать" , "четырнадцать" , "пятнадцать" , "шестнадцать" , "семнадцать" , "восемнадцать" , "девятнадцать" ) ; $digit_2 = "c" ;
return $output ;
}
function units( $x ) {
global $output , $male_or_female_unit , $digit_2 ;
if ( ( $x [ - 1 ] != 1 ) && ( $x [ - 1 ] != 2 ) ) {
$numberReplace = array ( "0" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ) ; $unitsWords = array ( "" , "три" , "четыре" , "пять" , "шесть" , "семь" , "восемь" , "девять" ) ; $output = $output . str_replace ( $numberReplace , $unitsWords , $x [ - 1 ] ) ; return $output ;
} else {
if ( $male_or_female_unit == 1 ) {
return $output ;
} else {
return $output ;
}
}
}
function ifNotTeenDecimals( $x ) {
global $output ;
$numberReplace = array ( "0" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ) ; $decimalWords = array ( "" , "двадцать" , "тридцать" , "сорок" , "пятьдесят" , "шестьдесят" , "семьдесят" , "восемьдесят" , "девяносто" ) ; $output = $output . str_replace ( $numberReplace , $decimalWords , $x [ - 2 ] ) . " " ; return units( $x ) ;
}
function computePart( ) {
global $input , $number , $male_or_female_unit ;
$male_or_female_unit = 1 ;
writeNumber( ) ;
checkDigit( ) ;
subnumber( $number ) ;
insertDigit( ) ;
}
for ( $i = 0 ; floor ( strlen ( $counter ) / 3 ) >= $i ; $i ++ ) { computePart( ) ;
$output = $output . " " ;
}
echo "На вашем счету $output (" . $counter . " р.)" ;
?>
PD9waHAKCiRpbnB1dCA9ICIxMTAwMjIiOwokY291bnRlciA9ICRpbnB1dDsKJG1hbGVfb3JfZmVtYWxlX3VuaXQgPSAxOwokbnVtYmVyID0gJyc7CiRkaWdpdF8xID0gJyc7CiRkaWdpdF8yID0gJyc7CiRkaWdpdFRvdGFsID0gJyc7CiRvdXRwdXQgPSAnJzsKCmZ1bmN0aW9uIHdyaXRlTnVtYmVyKCkgewoJZ2xvYmFsICRudW1iZXIsICRpbnB1dDsKCQoJaWYgKHN0cmxlbigkaW5wdXQpIDwgNCkgewoJCSRudW1iZXIgPSAkaW5wdXQ7Cgl9IGVsc2VpZiAoKHN0cmxlbigkaW5wdXQpICUgMykgPT0gMCkgewoJCSRudW1iZXIgPSAkaW5wdXRbMF0gLiAkaW5wdXRbMV0gLiAkaW5wdXRbMl07Cgl9IGVsc2UgewoJCSRudW1iZXIgPSBzdWJzdHIoJGlucHV0LCAwLCAoc3RybGVuKCRpbnB1dCkgJSAzKSk7Cgl9Cn0gCgpmdW5jdGlvbiBpbnNlcnREaWdpdCgpIHsKCWdsb2JhbCAkb3V0cHV0LCAkZGlnaXRUb3RhbCwgJGRpZ2l0XzEsICRkaWdpdF8yLCAkbnVtYmVyOwoJJGRpZ2l0QXJyYXlfMSA9IGFycmF5KCIvMGEkLyIsICIvMGIkLyIsICIvMGMkLyIsICIvMWEkLyIsICIvMWIkLyIsICIvMWMkLyIsICIvMmEkLyIsICIvMmIkLyIsICIvMmMkLyIsICIvM2EkLyIsICIvM2IkLyIsICIvM2MkLyIpOwoJJGRpZ2l0QXJyYXlfMiA9IGFycmF5KCLRgNGD0LHQu9GMIiwgItGA0YPQsdC70Y8iLCAi0YDRg9Cx0LvQtdC5IiwgItGC0YvRgdGP0YfQsCIsICLRgtGL0YHRj9GH0LgiLCAi0YLRi9GB0Y/RhyIsICLQvNC40LvQu9C40L7QvSIsICLQvNC40LvQu9C40L7QvdCwIiwgItC80LjQu9C70LjQvtC90L7QsiIsICLQvNC40LvQu9C40LDRgNC0IiwgItC80LjQu9C70LjQsNGA0LTQsCIsICLQvNC40LvQu9C40LDRgNC00L7QsiIpOwoJJGRpZ2l0VG90YWwgPSAkZGlnaXRfMSAuICRkaWdpdF8yOwoJaWYgKCgkbnVtYmVyID09ICIwMDAiKSAmJiAoJGRpZ2l0XzEgIT0gIjAiKSkgewoJCSRkaWdpdFRvdGFsID0gIiI7Cgl9Cgkkb3V0cHV0ID0gJG91dHB1dCAuICIgIiAuICRkaWdpdFRvdGFsOwoJJG91dHB1dCA9IHByZWdfcmVwbGFjZSgkZGlnaXRBcnJheV8xLCAkZGlnaXRBcnJheV8yLCAkb3V0cHV0KTsKfQoKZnVuY3Rpb24gY2hlY2tEaWdpdCgpIHsKCWdsb2JhbCAkZGlnaXRfMSwgJGlucHV0LCAkbWFsZV9vcl9mZW1hbGVfdW5pdDsKCWlmICgoMSA8PSBzdHJsZW4oJGlucHV0KSkgJiYgKDMgPj0gc3RybGVuKCRpbnB1dCkpKSB7ICAgICAgIC8vMCAtINC/0LXRgNCy0LDRjyDRgtGA0L7QudC60LAsIDEgLSDRgtGL0YHRj9GH0LgsIDIgLSDQvNGD0LvRjNGR0L3RiywgMyAtINC80YPQu9GM0Y/RgNC00YsKCQkkZGlnaXRfMSA9ICIwIjsKCX0gZWxzZWlmICgoNCA8PSBzdHJsZW4oJGlucHV0KSkgJiYgKDYgPj0gc3RybGVuKCRpbnB1dCkpKSB7CgkJJGRpZ2l0XzEgPSAiMSI7CgkJJG1hbGVfb3JfZmVtYWxlX3VuaXQgPSAwOwoJfSBlbHNlaWYgKCg3IDw9IHN0cmxlbigkaW5wdXQpKSAmJiAoOSA+PSBzdHJsZW4oJGlucHV0KSkpIHsKCQkkZGlnaXRfMSA9ICIyIjsKCX0gZWxzZWlmICgoMTAgPD0gc3RybGVuKCRpbnB1dCkpICYmICgxMiA+PSBzdHJsZW4oJGlucHV0KSkpIHsKCQkkZGlnaXRfMSA9ICIzIjsKCX0KfQoKZnVuY3Rpb24gc3VibnVtYmVyKCR4KSB7CglnbG9iYWwgJGRpZ2l0XzI7CgkKCWlmIChzdWJzdHIoJHgsIC0yLCAyKSA9PSAiMDAiKSB7CgkJJGRpZ2l0XzIgPSAiYyI7Cgl9IGVsc2VpZiAoJHhbLTFdID09ICIxIikgewoJCSRkaWdpdF8yID0gImEiOwoJfSBlbHNlaWYgKCgkeFstMV0gPT0gIjIiKSB8fCAoJHhbLTFdID09ICIzIikgfHwgKCR4Wy0xXSA9PSAiNCIpKSB7CgkJJGRpZ2l0XzIgPSAiYiI7Cgl9IGVsc2UgewoJCSRkaWdpdF8yID0gImMiOwoJfQoJCglpZiAoc3RybGVuKCR4KSA9PSAzKSB7CgkJaHVuZHJlZHMoJHgpOwoJCShwcmVnX21hdGNoKCcvKD88PVxkKVsxXVxkLycsICR4KSkgPyBpZlRlZW5EZWNpbWFscygkeCkgOiBpZk5vdFRlZW5EZWNpbWFscygkeCk7Cgl9IGVsc2VpZiAoc3RybGVuKCR4KSA9PSAxKSB7CgkJdW5pdHMoJHgpOwoJfSBlbHNlIHsKCQkocHJlZ19tYXRjaCgnL1sxXVxkLycsICR4KSkgPyBpZlRlZW5EZWNpbWFscygkeCkgOiBpZk5vdFRlZW5EZWNpbWFscygkeCk7Cgl9Cn0KCmZ1bmN0aW9uIGh1bmRyZWRzKCR4KSB7CglnbG9iYWwgJG91dHB1dDsKCSRudW1iZXJSZXBsYWNlID0gYXJyYXkoIjAiLCAiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiKTsKCSRodW5kcmVkV29yZHMgPSBhcnJheSgiIiwgImPRgtC+IiwgItC00LLQtdGB0YLQuCIsICLRgtGA0LjRgdGC0LAiLCAi0YfQtdGC0YvRgNC10YHRgtCwIiwgItC/0Y/RgtGM0YHQvtGCIiwgItGI0LXRgdGC0YzRgdC+0YIiLCAi0YHQtdC80YzRgdC+0YIiLCAi0LLQvtGB0LXQvNGM0YHQvtGCIiwgItC00LXQstGP0YLRjNGB0L7RgiIpOwoJJG91dHB1dCA9ICRvdXRwdXQgLiBzdHJfcmVwbGFjZSgkbnVtYmVyUmVwbGFjZSwgJGh1bmRyZWRXb3JkcywgJHhbMF0pIC4gIiAiOwoJcmV0dXJuICRvdXRwdXQ7Cn0KCmZ1bmN0aW9uIGlmVGVlbkRlY2ltYWxzKCR4KSB7CglnbG9iYWwgJG91dHB1dCwgJGRpZ2l0XzI7CgkkbnVtYmVyUmVwbGFjZSA9IGFycmF5KCIxMCIsICIxMSIsICIxMiIsICIxMyIsICIxNCIsICIxNSIsICIxNiIsICIxNyIsICIxOCIsICIxOSIpOwoJJGRlY2ltYWxXb3JkcyA9IGFycmF5KCLQtNC10YHRj9GC0YwiLCAi0L7QtNC40L3QvdCw0LTRhtCw0YLRjCIsICLQtNCy0LXQvdCw0LTRhtCw0YLRjCIsICLRgtGA0LjQvdCw0LTRhtCw0YLRjCIsICLRh9C10YLRi9GA0L3QsNC00YbQsNGC0YwiLCAi0L/Rj9GC0L3QsNC00YbQsNGC0YwiLCAi0YjQtdGB0YLQvdCw0LTRhtCw0YLRjCIsICLRgdC10LzQvdCw0LTRhtCw0YLRjCIsICLQstC+0YHQtdC80L3QsNC00YbQsNGC0YwiLCAi0LTQtdCy0Y/RgtC90LDQtNGG0LDRgtGMIik7Cgkkb3V0cHV0ID0gJG91dHB1dCAuIHN0cl9yZXBsYWNlKCRudW1iZXJSZXBsYWNlLCAkZGVjaW1hbFdvcmRzLCBzdWJzdHIoJHgsIC0yLCAyKSk7CgkkZGlnaXRfMiA9ICJjIjsKCXJldHVybiAkb3V0cHV0Owp9CgkKZnVuY3Rpb24gdW5pdHMoJHgpIHsKCWdsb2JhbCAkb3V0cHV0LCAkbWFsZV9vcl9mZW1hbGVfdW5pdCwgJGRpZ2l0XzI7CgkKCWlmICgoJHhbLTFdICE9IDEpICYmICgkeFstMV0gIT0gMikpIHsKCQkkbnVtYmVyUmVwbGFjZSA9IGFycmF5KCIwIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiKTsKCQkkdW5pdHNXb3JkcyA9IGFycmF5KCIiLCAi0YLRgNC4IiwgItGH0LXRgtGL0YDQtSIsICLQv9GP0YLRjCIsICLRiNC10YHRgtGMIiwgItGB0LXQvNGMIiwgItCy0L7RgdC10LzRjCIsICLQtNC10LLRj9GC0YwiKTsKCQkkb3V0cHV0ID0gJG91dHB1dCAuIHN0cl9yZXBsYWNlKCRudW1iZXJSZXBsYWNlLCAkdW5pdHNXb3JkcywgJHhbLTFdKTsKCQlyZXR1cm4gJG91dHB1dDsJCgl9IGVsc2UgewoJCWlmICgkbWFsZV9vcl9mZW1hbGVfdW5pdCA9PSAxKSB7CgkJCSRvdXRwdXQgPSAkb3V0cHV0IC4gc3RyX3JlcGxhY2UoYXJyYXkoIjEiLCAiMiIpLCBhcnJheSgi0L7QtNC40L0iLCAi0LTQstCwIiksICR4Wy0xXSk7CgkJCXJldHVybiAkb3V0cHV0OwoJCX0gZWxzZSB7CgkJCSRvdXRwdXQgPSAkb3V0cHV0IC4gc3RyX3JlcGxhY2UoYXJyYXkoIjEiLCAiMiIpLCBhcnJheSgi0L7QtNC90LAiLCAi0LTQstC1IiksICR4Wy0xXSk7CgkJCXJldHVybiAkb3V0cHV0OwoJCX0KCX0KfQoKZnVuY3Rpb24gaWZOb3RUZWVuRGVjaW1hbHMoJHgpIHsKCWdsb2JhbCAkb3V0cHV0OwoJJG51bWJlclJlcGxhY2UgPSBhcnJheSgiMCIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiKTsKCSRkZWNpbWFsV29yZHMgPSBhcnJheSgiIiwgItC00LLQsNC00YbQsNGC0YwiLCAi0YLRgNC40LTRhtCw0YLRjCIsICLRgdC+0YDQvtC6IiwgItC/0Y/RgtGM0LTQtdGB0Y/RgiIsICLRiNC10YHRgtGM0LTQtdGB0Y/RgiIsICLRgdC10LzRjNC00LXRgdGP0YIiLCAi0LLQvtGB0LXQvNGM0LTQtdGB0Y/RgiIsICLQtNC10LLRj9C90L7RgdGC0L4iKTsKCSRvdXRwdXQgPSAkb3V0cHV0IC4gc3RyX3JlcGxhY2UoJG51bWJlclJlcGxhY2UsICRkZWNpbWFsV29yZHMsICR4Wy0yXSkgLiAiICI7CglyZXR1cm4gdW5pdHMoJHgpOwp9CgpmdW5jdGlvbiBjb21wdXRlUGFydCgpIHsKCWdsb2JhbCAkaW5wdXQsICRudW1iZXIsICRtYWxlX29yX2ZlbWFsZV91bml0OwoJJG1hbGVfb3JfZmVtYWxlX3VuaXQgPSAxOwoJd3JpdGVOdW1iZXIoKTsKCWNoZWNrRGlnaXQoKTsKCXN1Ym51bWJlcigkbnVtYmVyKTsKCWluc2VydERpZ2l0KCk7CgkkaW5wdXQgPSBzdWJzdHIoJGlucHV0LCBzdHJsZW4oJG51bWJlcikpOwp9Cgpmb3IgKCRpID0gMDsgZmxvb3Ioc3RybGVuKCRjb3VudGVyKSAvIDMpID49ICRpOyAkaSsrKSB7Cgljb21wdXRlUGFydCgpOwoJJG91dHB1dCA9ICRvdXRwdXQgLiAiICI7Cn0KJG91dHB1dCA9IHByZWdfcmVwbGFjZShhcnJheSgiL1xzKy8iLCAiLyjRgNGD0LHQu1vRj9C10LnRjF0rKShccysp0YDRg9Cx0LvQtdC5L3UiKSwgYXJyYXkoIiAiLCAiJDEiKSwgJG91dHB1dCk7CgplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyAkb3V0cHV0KCIgLiAkY291bnRlciAuICIg0YAuKSI7Cgo/Pg==