<?php
// Staring straight up into the sky ... oh my my
error_reporting(-1);
function spellSmallNumber($num) {
$result = array();
$spelling = array(
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 => 'девятнадцать'
);
$femaleSpelling = array(
1 => 'одна', 2 => 'две'
);
if ($num == 0) {
return $num;
}
$hundWithoutDec = floor($num / 100) * 100; //убирает десятки у сотен
if($hundWithoutDec != 0) {
array_push($result, $spelling[$hundWithoutDec]);
}
$hundDec = $num % 100; // оставляет только десятки
if($hundDec >= 11 and $hundDec <=19) {
array_push($result, $spelling[$hundDec]);
} elseif($hundDec != 0) {
$hundDecWithoutOne = floor($hundDec / 10) * 10; //десятки без единиц
if($hundDecWithoutOne != 0) {
array_push($result, $spelling[$hundDecWithoutOne]);
}
$hundOne = $hundDec % 10;
if ($hundOne != 0) {
array_push($result, $spelling[$hundOne]);
}
}
$text = implode(' ', $result);
return $text;
}
function getWordForm($num, $word, $word1, $word2) {
$z = $num % 10;
if($z == 1){
return $word; // тысяча, миллион
}
$z = $num % 10;
if($z >= 2 && $z <= 4){
return $word1; //тысячи, миллиона
}
else{
return $word2; // тысяч, миллионов
}
}
function inclineWord($number, $word1, $word2, $word5) {
$x = $number % 100;
if($x >= 11 and $x <=20){
return $word5;
} else {
$last2Digits = $number % 10;
if($last2Digits == 1) {
return $word1;
} elseif($last2Digits >= 2 and $last2Digits <= 4) {
return $word2;
} else {
return $word5;
}
}
}
function spellNumber($number) {
$millions = floor($number / 1000000); //миллионы
$hundredThous = floor($number / 1000);//без тысяч сотни тысяч
$hundWithoutMil = $hundredThous % 1000; // сотни тысяч
$hundred = $number % 1000; //просто сотни
$numberToString = array();
array_push($numberToString, $millions);
$milWord = getWordForm($millions,"миллион","миллиона","миллионов");
array_push($numberToString, $milWord);
$thous = spellSmallNumber($hundWithoutMil);
array_push($numberToString, $thous);
$thousWord = getWordForm($hundWithoutMil,"тысяча","тысячи","тысяч");
array_push($numberToString, $thousWord);
$hund = spellSmallNumber($hundred);
array_push($numberToString, $hund);
$hundRouble = inclineWord($hundred,"рубль","рубля","рублей");
array_push($numberToString, $hundRouble);
$end = implode(" ", $numberToString);
return $end;
}
$amount1 = mt_rand(1,99999999);
$text1 = spellNumber($amount1);
echo "На вашем счету {$text1}\n";
echo "($amount1)\n";
$amount2 = mt_rand(1,99999999);
$text2 = spellNumber($amount2);
echo "На вашем счету {$text2}\n";
echo "($amount2)\n";
$amount3 = mt_rand(1,99999999);
$text3 = spellNumber($amount3);
echo "На вашем счету {$text3}\n";
echo "($amount3)\n";
$amount4 = mt_rand(1,99999999);
$text4 = spellNumber($amount4);
echo "На вашем счету {$text4}\n";
echo "($amount4)\n";
?>
PD9waHAKIAovLyBTdGFyaW5nIHN0cmFpZ2h0IHVwIGludG8gdGhlIHNreSAuLi4gb2ggbXkgbXkKZXJyb3JfcmVwb3J0aW5nKC0xKTsKIApmdW5jdGlvbiBzcGVsbFNtYWxsTnVtYmVyKCRudW0pIHsKJHJlc3VsdCA9IGFycmF5KCk7Cgkkc3BlbGxpbmcgPSBhcnJheSgKICAgICAgICAwICAgPT4gICfQvdC+0LvRjCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwICA9PiAgJ9C00LXRgdGP0YLRjCcsICAgICAgIDEwMCA9PiAgJ9GB0YLQvicsCiAgICAgICAgMSAgID0+ICAn0L7QtNC40L0nLCAgICAgICAgIDExICA9PiAgJ9C+0LTQuNC90L3QsNC00YbQsNGC0YwnLCAgICAgIDIwICA9PiAgJ9C00LLQsNC00YbQsNGC0YwnLCAgICAgMjAwID0+ICAn0LTQstC10YHRgtC4JywKICAgICAgICAyICAgPT4gICfQtNCy0LAnLCAgICAgICAgICAxMiAgPT4gICfQtNCy0LXQvdCw0LTRhtCw0YLRjCcsICAgICAgIDMwICA9PiAgJ9GC0YDQuNC00YbQsNGC0YwnLCAgICAgMzAwID0+ICAn0YLRgNC40YHRgtCwJywKICAgICAgICAzICAgPT4gICfRgtGA0LgnLCAgICAgICAgICAxMyAgPT4gICfRgtGA0LjQvdCw0LTRhtCw0YLRjCcsICAgICAgIDQwICA9PiAgJ9GB0L7RgNC+0LonLCAgICAgICAgNDAwID0+ICAn0YfQtdGC0YvRgNC10YHRgtCwJywKICAgICAgICA0ICAgPT4gICfRh9C10YLRi9GA0LUnLCAgICAgICAxNCAgPT4gICfRh9C10YLRi9GA0L3QsNC00YbQsNGC0YwnLCAgICAgNTAgID0+ICAn0L/Rj9GC0YzQtNC10YHRj9GCJywgICAgNTAwID0+ICAn0L/Rj9GC0YzRgdC+0YInLAogICAgICAgIDUgICA9PiAgJ9C/0Y/RgtGMJywgICAgICAgICAxNSAgPT4gICfQv9GP0YLQvdCw0LTRhtCw0YLRjCcsICAgICAgIDYwICA9PiAgJ9GI0LXRgdGC0YzQtNC10YHRj9GCJywgICA2MDAgPT4gICfRiNC10YHRgtGM0YHQvtGCJywKICAgICAgICA2ICAgPT4gICfRiNC10YHRgtGMJywgICAgICAgIDE2ICA9PiAgJ9GI0LXRgdGC0L3QsNC00YbQsNGC0YwnLCAgICAgIDcwICA9PiAgJ9GB0LXQvNGM0LTQtdGB0Y/RgicsICAgIDcwMCA9PiAgJ9GB0LXQvNGM0YHQvtGCJywgICAgCiAgICAgICAgNyAgID0+ICAn0YHQtdC80YwnLCAgICAgICAgIDE3ICA9PiAgJ9GB0LXQvNC90LDQtNGG0LDRgtGMJywgICAgICAgODAgID0+ICAn0LLQvtGB0LXQvNGM0LTQtdGB0Y/RgicsICAgODAwID0+ICAn0LLQvtGB0LXQvNGM0YHQvtGCJywKICAgICAgICA4ICAgPT4gICfQstC+0YHQtdC80YwnLCAgICAgICAxOCAgPT4gICfQstC+0YHQtdC80L3QsNC00YbQsNGC0YwnLCAgICAgOTAgID0+ICAn0LTQtdCy0Y/QvdC+0YHRgtC+JywgICAgIDkwMCA9PiAgJ9C00LXQstGP0YLRjNGB0L7RgicsCiAgICAgICAgOSAgID0+ICAn0LTQtdCy0Y/RgtGMJywgICAgICAgMTkgID0+ICAn0LTQtdCy0Y/RgtC90LDQtNGG0LDRgtGMJyAgICAKICAgICk7CiAKICAgICAgICAkZmVtYWxlU3BlbGxpbmcgPSBhcnJheSgKICAgICAgICAxICAgPT4gICfQvtC00L3QsCcsICAgICAgICAyICAgPT4gICfQtNCy0LUnCiAgICApOwogCmlmICgkbnVtID09IDApIHsKCXJldHVybiAkbnVtOwp9CiAKIAokaHVuZFdpdGhvdXREZWMgPSBmbG9vcigkbnVtIC8gMTAwKSAqIDEwMDsgLy/Rg9Cx0LjRgNCw0LXRgiDQtNC10YHRj9GC0LrQuCDRgyDRgdC+0YLQtdC9CmlmKCRodW5kV2l0aG91dERlYyAhPSAwKSB7CmFycmF5X3B1c2goJHJlc3VsdCwgJHNwZWxsaW5nWyRodW5kV2l0aG91dERlY10pOwp9CiRodW5kRGVjID0gJG51bSAlIDEwMDsgLy8g0L7RgdGC0LDQstC70Y/QtdGCINGC0L7Qu9GM0LrQviDQtNC10YHRj9GC0LrQuAppZigkaHVuZERlYyA+PSAxMSBhbmQgJGh1bmREZWMgPD0xOSkgewoJYXJyYXlfcHVzaCgkcmVzdWx0LCAkc3BlbGxpbmdbJGh1bmREZWNdKTsKfSBlbHNlaWYoJGh1bmREZWMgIT0gMCkgewokaHVuZERlY1dpdGhvdXRPbmUgPSBmbG9vcigkaHVuZERlYyAvIDEwKSAqIDEwOyAvL9C00LXRgdGP0YLQutC4INCx0LXQtyDQtdC00LjQvdC40YYKaWYoJGh1bmREZWNXaXRob3V0T25lICE9IDApIHsKYXJyYXlfcHVzaCgkcmVzdWx0LCAkc3BlbGxpbmdbJGh1bmREZWNXaXRob3V0T25lXSk7Cn0KIAokaHVuZE9uZSA9ICRodW5kRGVjICUgMTA7CiAKIGlmICgkaHVuZE9uZSAhPSAwKSB7CmFycmF5X3B1c2goJHJlc3VsdCwgJHNwZWxsaW5nWyRodW5kT25lXSk7Cn0KCn0KCiAKJHRleHQgPSBpbXBsb2RlKCcgJywgJHJlc3VsdCk7CnJldHVybiAkdGV4dDsKfQogCiAKIApmdW5jdGlvbiBnZXRXb3JkRm9ybSgkbnVtLCAkd29yZCwgJHdvcmQxLCAkd29yZDIpIHsKIAoJJHogPSAkbnVtICUgMTA7CglpZigkeiA9PSAxKXsKCQlyZXR1cm4gJHdvcmQ7IC8vINGC0YvRgdGP0YfQsCwg0LzQuNC70LvQuNC+0L0KCX0KCSR6ID0gJG51bSAlIDEwOwoJaWYoJHogPj0gMiAmJiAkeiA8PSA0KXsKCQlyZXR1cm4gJHdvcmQxOyAvL9GC0YvRgdGP0YfQuCwg0LzQuNC70LvQuNC+0L3QsAoJfQoJZWxzZXsKCQlyZXR1cm4gJHdvcmQyOyAvLyDRgtGL0YHRj9GHLCDQvNC40LvQu9C40L7QvdC+0LIKCX0KfQogCmZ1bmN0aW9uIGluY2xpbmVXb3JkKCRudW1iZXIsICR3b3JkMSwgJHdvcmQyLCAkd29yZDUpIHsKIAkkeCA9ICRudW1iZXIgJSAxMDA7CglpZigkeCA+PSAxMSBhbmQgJHggPD0yMCl7CgkJcmV0dXJuICR3b3JkNTsKCX0gZWxzZSB7CiAgICAkbGFzdDJEaWdpdHMgPSAkbnVtYmVyICUgMTA7CiAgICBpZigkbGFzdDJEaWdpdHMgPT0gMSkgewogICAgCXJldHVybiAkd29yZDE7CiAgICB9IGVsc2VpZigkbGFzdDJEaWdpdHMgPj0gMiBhbmQgJGxhc3QyRGlnaXRzIDw9IDQpIHsKICAgIAlyZXR1cm4gJHdvcmQyOwogICAgfSBlbHNlIHsKICAgIAlyZXR1cm4gJHdvcmQ1OwogICAgfQoJfQp9CiAKIApmdW5jdGlvbiBzcGVsbE51bWJlcigkbnVtYmVyKSB7CiRtaWxsaW9ucyA9IGZsb29yKCRudW1iZXIgLyAxMDAwMDAwKTsgLy/QvNC40LvQu9C40L7QvdGLCiRodW5kcmVkVGhvdXMgPSBmbG9vcigkbnVtYmVyIC8gMTAwMCk7Ly/QsdC10Lcg0YLRi9GB0Y/RhyDRgdC+0YLQvdC4INGC0YvRgdGP0YcKJGh1bmRXaXRob3V0TWlsID0gJGh1bmRyZWRUaG91cyAlIDEwMDA7IC8vINGB0L7RgtC90Lgg0YLRi9GB0Y/RhwokaHVuZHJlZCA9ICRudW1iZXIgJSAxMDAwOyAvL9C/0YDQvtGB0YLQviDRgdC+0YLQvdC4CiAKCSRudW1iZXJUb1N0cmluZyA9IGFycmF5KCk7CglhcnJheV9wdXNoKCRudW1iZXJUb1N0cmluZywgJG1pbGxpb25zKTsKCSRtaWxXb3JkID0gZ2V0V29yZEZvcm0oJG1pbGxpb25zLCLQvNC40LvQu9C40L7QvSIsItC80LjQu9C70LjQvtC90LAiLCLQvNC40LvQu9C40L7QvdC+0LIiKTsKCWFycmF5X3B1c2goJG51bWJlclRvU3RyaW5nLCAkbWlsV29yZCk7CiAKCSR0aG91cyA9IHNwZWxsU21hbGxOdW1iZXIoJGh1bmRXaXRob3V0TWlsKTsKCWFycmF5X3B1c2goJG51bWJlclRvU3RyaW5nLCAkdGhvdXMpOwoJJHRob3VzV29yZCA9IGdldFdvcmRGb3JtKCRodW5kV2l0aG91dE1pbCwi0YLRi9GB0Y/Rh9CwIiwi0YLRi9GB0Y/Rh9C4Iiwi0YLRi9GB0Y/RhyIpOwoJYXJyYXlfcHVzaCgkbnVtYmVyVG9TdHJpbmcsICR0aG91c1dvcmQpOwogCgkkaHVuZCA9IHNwZWxsU21hbGxOdW1iZXIoJGh1bmRyZWQpOwoJYXJyYXlfcHVzaCgkbnVtYmVyVG9TdHJpbmcsICRodW5kKTsKCSRodW5kUm91YmxlID0gaW5jbGluZVdvcmQoJGh1bmRyZWQsItGA0YPQsdC70YwiLCLRgNGD0LHQu9GPIiwi0YDRg9Cx0LvQtdC5Iik7CglhcnJheV9wdXNoKCRudW1iZXJUb1N0cmluZywgJGh1bmRSb3VibGUpOwogCgkkZW5kID0gaW1wbG9kZSgiICIsICRudW1iZXJUb1N0cmluZyk7CglyZXR1cm4gJGVuZDsgCn0KIAokYW1vdW50MSA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0MSA9IHNwZWxsTnVtYmVyKCRhbW91bnQxKTsKIAplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQxfVxuIjsKZWNobyAiKCRhbW91bnQxKVxuIjsKIAokYW1vdW50MiA9IG10X3JhbmQoMSw5OTk5OTk5OSk7CiR0ZXh0MiA9IHNwZWxsTnVtYmVyKCRhbW91bnQyKTsKIAogCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDJ9XG4iOwplY2hvICIoJGFtb3VudDIpXG4iOwogCiRhbW91bnQzID0gbXRfcmFuZCgxLDk5OTk5OTk5KTsKJHRleHQzID0gc3BlbGxOdW1iZXIoJGFtb3VudDMpOwogCiAKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0M31cbiI7CmVjaG8gIigkYW1vdW50MylcbiI7CiAKJGFtb3VudDQgPSBtdF9yYW5kKDEsOTk5OTk5OTkpOwokdGV4dDQgPSBzcGVsbE51bWJlcigkYW1vdW50NCk7CiAKIAplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQ0fVxuIjsKZWNobyAiKCRhbW91bnQ0KVxuIjsKPz4=