-     <?php 
-   
-     // Staring straight up into the sky ... oh my my 
-   
-   
-     /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */ 
-     function inclineWord($number, $word1, $word2, $word3) { 
-         if ($number == 1) { 
-             return $word1; 
-         } elseif ($number > 1 && $number < 5) 
-         { 
-             return $word2; 
-         } else { 
-             return $word3; 
-         } 
-     } 
-   
-     /*  
-         Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,  
-         если мы считаем число для мужского рода (один рубль),  
-         и 1 — для женского (одна тысяча)  
-     */ 
-     function smallNumberToText($number, $isFemale) { 
-   
-         $text = ""; 
-   
-             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   =>  'две' 
-         ); 
-   
-         while ($number != 0) { 
-         		$text .= "{$femaleSpelling[$number]} "; 
-         		break; 
-         		$text .= "{$spelling[$number]} "; 
-         		break; 
-         	} 
-   
-         	if ($number > 99) { 
-         		$temp = $number - ($number % 100); 
-         		$number -= $temp; 
-         		$text .= "{$spelling[$temp]} "; 
-         	} else { 
-         		$temp = $number - ($number % 10); 
-         		$number -= $temp; 
-         		$text .= "{$spelling[$temp]} "; 
-         	} 
-         } 
-   
-         return $text; 
-     } 
-   
-     function getLastDigit($number) { 
-   
-     	if ($number > 99) { 
-     		$number %= 100; 
-     	} 
-   
-     	if ($number > 19) { 
-     		$number %= 10; 
-     	} 
-   
-   
-     	return $number; 
-     } 
-   
-     function getSmallerNumber($number) { 
-         if ($number > 999999) { 
-             $number /= 1000000; 
-         } else { 
-             $number /= 1000; 
-         } 
-   
-     } 
-   
-     function numberToText($number) { 
-   
-         $text = ""; 
-   
-         if ($number == 0) { 
-         	return "ноль (0) рублей"; 
-         } 
-   
-         $originalNumber = $number; 
-   
-         while ($number != 0) 
-         { 
-             $smallerNumber = getSmallerNumber($number); 
-             if ($number > 999999) { 
-         	    $text .= smallNumberToText($smallerNumber, 0) . inclineWord(getLastDigit($smallerNumber), "миллион ", "миллиона ", "миллионов "); 
-         	    $number -= $smallerNumber * 1000000; 
-             } elseif ($number > 999) { 
-                 $text .= smallNumberToText($smallerNumber, 1) . inclineWord(getLastDigit($smallerNumber), "тысяча ", "тысячи ", "тысяч "); 
-                 $number -= $smallerNumber * 1000; 
-             } else { 
-                 $text .= smallNumberToText($number, 0) . "({$originalNumber}) " . inclineWord(getLastDigit($number), "рубль", "рубля", "рублей"); 
-                 break; 
-             } 
-         } 
-   
-         return $text; 
-     } 
-   
- echo numberToText(11340); 
				ICAgIDw/cGhwCiAgICAgCiAgICAvLyBTdGFyaW5nIHN0cmFpZ2h0IHVwIGludG8gdGhlIHNreSAuLi4gb2ggbXkgbXkKICAgIGVycm9yX3JlcG9ydGluZygtMSk7CiAgICBtYl9pbnRlcm5hbF9lbmNvZGluZygndXRmLTgnKTsKICAgICAKICAgICAKICAgIC8qINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0YPRjiDRh9C40YHQu9GDINGE0L7RgNC80YMg0YHQu9C+0LLQsDogMSDRgNGD0LHQu9GMLCAyINGA0YPQsdC70Y8sIDUg0YDRg9Cx0LvQtdC5ICovCiAgICBmdW5jdGlvbiBpbmNsaW5lV29yZCgkbnVtYmVyLCAkd29yZDEsICR3b3JkMiwgJHdvcmQzKSB7CiAgICAgICAgaWYgKCRudW1iZXIgPT0gMSkgewogICAgICAgICAgICByZXR1cm4gJHdvcmQxOwogICAgICAgIH0gZWxzZWlmICgkbnVtYmVyID4gMSAmJiAkbnVtYmVyIDwgNSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkd29yZDI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICR3b3JkMzsKICAgICAgICB9CiAgICB9CiAgICAgCiAgICAvKiAKICAgICAgICDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINGH0LjRgdC70LAg0L7RgiAwINC00L4gOTk5INCyINGC0LXQutGB0YIuINCf0LDRgNCw0LzQtdGC0YAgJGlzRmVtYWxlINGA0LDQstC10L0g0L3Rg9C70Y4sIAogICAgICAgINC10YHQu9C4INC80Ysg0YHRh9C40YLQsNC10Lwg0YfQuNGB0LvQviDQtNC70Y8g0LzRg9C20YHQutC+0LPQviDRgNC+0LTQsCAo0L7QtNC40L0g0YDRg9Cx0LvRjCksIAogICAgICAgINC4IDEg4oCUINC00LvRjyDQttC10L3RgdC60L7Qs9C+ICjQvtC00L3QsCDRgtGL0YHRj9GH0LApIAogICAgKi8KICAgIGZ1bmN0aW9uIHNtYWxsTnVtYmVyVG9UZXh0KCRudW1iZXIsICRpc0ZlbWFsZSkgewogICAgIAogICAgICAgICR0ZXh0ID0gIiI7CiAgICAgCiAgICAgICAgJHNwZWxsaW5nID0gYXJyYXkoCiAgICAgICAgICAgIDAgICA9PiAgJ9C90L7Qu9GMJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgID0+ICAn0LTQtdGB0Y/RgtGMJywgICAgICAgMTAwID0+ICAn0YHRgtC+JywKICAgICAgICAgICAgMSAgID0+ICAn0L7QtNC40L0nLCAgICAgICAgIDExICA9PiAgJ9C+0LTQuNC90L3QsNC00YbQsNGC0YwnLCAgICAgIDIwICA9PiAgJ9C00LLQsNC00YbQsNGC0YwnLCAgICAgMjAwID0+ICAn0LTQstC10YHRgtC4JywKICAgICAgICAgICAgMiAgID0+ICAn0LTQstCwJywgICAgICAgICAgMTIgID0+ICAn0LTQstC10L3QsNC00YbQsNGC0YwnLCAgICAgICAzMCAgPT4gICfRgtGA0LjQtNGG0LDRgtGMJywgICAgIDMwMCA9PiAgJ9GC0YDQuNGB0YLQsCcsCiAgICAgICAgICAgIDMgICA9PiAgJ9GC0YDQuCcsICAgICAgICAgIDEzICA9PiAgJ9GC0YDQuNC90LDQtNGG0LDRgtGMJywgICAgICAgNDAgID0+ICAn0YHQvtGA0L7QuicsICAgICAgICA0MDAgPT4gICfRh9C10YLRi9GA0LXRgdGC0LAnLAogICAgICAgICAgICA0ICAgPT4gICfRh9C10YLRi9GA0LUnLCAgICAgICAxNCAgPT4gICfRh9C10YLRi9GA0L3QsNC00YbQsNGC0YwnLCAgICAgNTAgID0+ICAn0L/Rj9GC0YzQtNC10YHRj9GCJywgICAgNTAwID0+ICAn0L/Rj9GC0YzRgdC+0YInLAogICAgICAgICAgICA1ICAgPT4gICfQv9GP0YLRjCcsICAgICAgICAgMTUgID0+ICAn0L/Rj9GC0L3QsNC00YbQsNGC0YwnLCAgICAgICA2MCAgPT4gICfRiNC10YHRgtGM0LTQtdGB0Y/RgicsICAgNjAwID0+ICAn0YjQtdGB0YLRjNGB0L7RgicsCiAgICAgICAgICAgIDYgICA9PiAgJ9GI0LXRgdGC0YwnLCAgICAgICAgMTYgID0+ICAn0YjQtdGB0YLQvdCw0LTRhtCw0YLRjCcsICAgICAgNzAgID0+ICAn0YHQtdC80YzQtNC10YHRj9GCJywgICAgNzAwID0+ICAn0YHQtdC80YzRgdC+0YInLCAgICAKICAgICAgICAgICAgNyAgID0+ICAn0YHQtdC80YwnLCAgICAgICAgIDE3ICA9PiAgJ9GB0LXQvNC90LDQtNGG0LDRgtGMJywgICAgICAgODAgID0+ICAn0LLQvtGB0LXQvNGM0LTQtdGB0Y/RgicsICAgODAwID0+ICAn0LLQvtGB0LXQvNGM0YHQvtGCJywKICAgICAgICAgICAgOCAgID0+ICAn0LLQvtGB0LXQvNGMJywgICAgICAgMTggID0+ICAn0LLQvtGB0LXQvNC90LDQtNGG0LDRgtGMJywgICAgIDkwICA9PiAgJ9C00LXQstGP0L3QvtGB0YLQvicsICAgICA5MDAgPT4gICfQtNC10LLRj9GC0YzRgdC+0YInLAogICAgICAgICAgICA5ICAgPT4gICfQtNC10LLRj9GC0YwnLCAgICAgICAxOSAgPT4gICfQtNC10LLRj9GC0L3QsNC00YbQsNGC0YwnICAgIAogICAgICAgICk7CiAgICAgCiAgICAgICAgJGZlbWFsZVNwZWxsaW5nID0gYXJyYXkoCiAgICAgICAgICAgIDEgICA9PiAgJ9C+0LTQvdCwJywgICAgICAgIDIgICA9PiAgJ9C00LLQtScKICAgICAgICApOwogICAgIAogICAgICAgIHdoaWxlICgkbnVtYmVyICE9IDApIHsKICAgICAgICAJaWYgKCRpc0ZlbWFsZSA9PSAxICYmIGFycmF5X2tleV9leGlzdHMoJG51bWJlciwgJGZlbWFsZVNwZWxsaW5nKSkgewogICAgICAgIAkJJHRleHQgLj0gInskZmVtYWxlU3BlbGxpbmdbJG51bWJlcl19ICI7CiAgICAgICAgCQlicmVhazsKICAgICAgICAJfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJG51bWJlciwgJHNwZWxsaW5nKSkgewogICAgICAgIAkJJHRleHQgLj0gInskc3BlbGxpbmdbJG51bWJlcl19ICI7CiAgICAgICAgCQlicmVhazsKICAgICAgICAJfQogICAgIAogICAgICAgIAlpZiAoJG51bWJlciA+IDk5KSB7CiAgICAgICAgCQkkdGVtcCA9ICRudW1iZXIgLSAoJG51bWJlciAlIDEwMCk7CiAgICAgICAgCQkkbnVtYmVyIC09ICR0ZW1wOwogICAgICAgIAkJJHRleHQgLj0gInskc3BlbGxpbmdbJHRlbXBdfSAiOwogICAgICAgIAl9IGVsc2UgewogICAgICAgIAkJJHRlbXAgPSAkbnVtYmVyIC0gKCRudW1iZXIgJSAxMCk7CiAgICAgICAgCQkkbnVtYmVyIC09ICR0ZW1wOwogICAgICAgIAkJJHRleHQgLj0gInskc3BlbGxpbmdbJHRlbXBdfSAiOwogICAgICAgIAl9CiAgICAgICAgfQogICAgIAogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KICAgICAKICAgIGZ1bmN0aW9uIGdldExhc3REaWdpdCgkbnVtYmVyKSB7CiAgICAJCiAgICAJaWYgKCRudW1iZXIgPiA5OSkgewogICAgCQkkbnVtYmVyICU9IDEwMDsKICAgIAl9CiAgICAJCiAgICAJaWYgKCRudW1iZXIgPiAxOSkgewogICAgCQkkbnVtYmVyICU9IDEwOwogICAgCX0KICAgIAkKICAgIAkKICAgIAlyZXR1cm4gJG51bWJlcjsKICAgIH0KICAgICAKICAgIGZ1bmN0aW9uIGdldFNtYWxsZXJOdW1iZXIoJG51bWJlcikgewogICAgICAgIGlmICgkbnVtYmVyID4gOTk5OTk5KSB7CiAgICAgICAgICAgICRudW1iZXIgLz0gMTAwMDAwMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbnVtYmVyIC89IDEwMDA7CiAgICAgICAgfQogICAgIAogICAgICAgIHJldHVybiBpbnR2YWwoJG51bWJlcik7CiAgICB9CiAgICAgCiAgICBmdW5jdGlvbiBudW1iZXJUb1RleHQoJG51bWJlcikgewogICAgIAogICAgICAgICR0ZXh0ID0gIiI7CiAgICAgCiAgICAgICAgaWYgKCRudW1iZXIgPT0gMCkgewogICAgICAgIAlyZXR1cm4gItC90L7Qu9GMICgwKSDRgNGD0LHQu9C10LkiOwogICAgICAgIH0KICAgICAKICAgICAgICAkb3JpZ2luYWxOdW1iZXIgPSAkbnVtYmVyOwogICAgIAogICAgICAgIHdoaWxlICgkbnVtYmVyICE9IDApCiAgICAgICAgewogICAgICAgICAgICAkc21hbGxlck51bWJlciA9IGdldFNtYWxsZXJOdW1iZXIoJG51bWJlcik7CiAgICAgICAgICAgIGlmICgkbnVtYmVyID4gOTk5OTk5KSB7CiAgICAgICAgCSAgICAkdGV4dCAuPSBzbWFsbE51bWJlclRvVGV4dCgkc21hbGxlck51bWJlciwgMCkgLiBpbmNsaW5lV29yZChnZXRMYXN0RGlnaXQoJHNtYWxsZXJOdW1iZXIpLCAi0LzQuNC70LvQuNC+0L0gIiwgItC80LjQu9C70LjQvtC90LAgIiwgItC80LjQu9C70LjQvtC90L7QsiAiKTsKICAgICAgICAJICAgICRudW1iZXIgLT0gJHNtYWxsZXJOdW1iZXIgKiAxMDAwMDAwOwogICAgICAgICAgICB9IGVsc2VpZiAoJG51bWJlciA+IDk5OSkgewogICAgICAgICAgICAgICAgJHRleHQgLj0gc21hbGxOdW1iZXJUb1RleHQoJHNtYWxsZXJOdW1iZXIsIDEpIC4gaW5jbGluZVdvcmQoZ2V0TGFzdERpZ2l0KCRzbWFsbGVyTnVtYmVyKSwgItGC0YvRgdGP0YfQsCAiLCAi0YLRi9GB0Y/Rh9C4ICIsICLRgtGL0YHRj9GHICIpOwogICAgICAgICAgICAgICAgJG51bWJlciAtPSAkc21hbGxlck51bWJlciAqIDEwMDA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGV4dCAuPSBzbWFsbE51bWJlclRvVGV4dCgkbnVtYmVyLCAwKSAuICIoeyRvcmlnaW5hbE51bWJlcn0pICIgLiBpbmNsaW5lV29yZChnZXRMYXN0RGlnaXQoJG51bWJlciksICLRgNGD0LHQu9GMIiwgItGA0YPQsdC70Y8iLCAi0YDRg9Cx0LvQtdC5Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAKICAgICAgICByZXR1cm4gJHRleHQ7CiAgICB9CiAgICAKZWNobyBudW1iZXJUb1RleHQoMTEzNDApOw==