<?php
    // Staring straight up into the sky ... oh my my
    error_reporting(-1);
    mb_internal_encoding('utf-8');
    
    /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
    function inclineWord($number) {
        if (($number % 100 >= 10) && ($number % 100 <= 20)) {
            $number = " рублей";
        }
        elseif (($number % 10 == 0) || ($number % 10 >= 5)) {
         	$number = " рублей";
        }
        elseif (($number % 10 >= 2) && ($number % 10 <= 4)) {
          	$number = " рубля";
        }
        else {
         	$number = " рубль";
        }
        return $number;
    }
        
    /* Разбивает число на разряды (по три цифры) и посылает их обрабатывать в функцию smallNumberToText*/
    function splitNumberToText($number) {
        $million = floor($number / 1000000);
        if ($million != 0) {
            $word = smallNumberToText($million, 1);
            if (($million % 10 == 1) && ($million != 11)) {
                $word = $word . " миллион ";
            }
            elseif (($million % 10 >= 2) && ($million % 10 <= 4)) {
                $word = $word . " миллиона ";
            }
            else {
                $word = $word . " миллионов ";
            }
        }
        $x = $number % 1000000;
        $thousand = floor($x / 1000);
        if ($thousand != 0) {
            $word = $word . smallNumberToText($thousand, 2);
            if (($thousand % 10 == 1) && ($thousand != 11)) {
                $word = $word . " тысяча ";
            }
            elseif (($thousand % 10 >= 2) && ($thousand % 10 <= 5)) {
                $word = $word . " тысячи ";
            }
            else {
                $word = $word . " тысяч ";
            }
        }
        $hundred = $number % 1000;
        $word = $word . smallNumberToText($hundred, 1);
        return $word;
	}
    /* 
    Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю, 
    если мы считаем число для мужского рода (один рубль), 
    и 1 — для женского (одна тысяча) 
    */
    function smallNumberToText($number, $isFemale) {
        $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  =>  'девятнадцать'    
        );
        
    if ($isFemale == 2) {
        $spelling[1] = 'одна';
        $spelling[2] = 'две';
    }
        
    $word = ''; 
    
    if ($number == 0) {
     	$word = $spelling[$number];
      	return $word;
    }
    
    $firstDigit = floor($number / 100);
    if (($firstDigit != 0) && ($number >= 100)) {
        $firstDigit = $firstDigit * 100;
        $word = $word . $spelling[$firstDigit];
    }
    
    $x = $number % 100;
    if (($x >= 11) && ($x <= 19)) {
        $word = $word . ' ' . $spelling[$x]; 
    }
    else {
        $secondDigit = floor($x / 10);
        if (($secondDigit != 0) && ($number >= 10)){
      	$secondDigit = $secondDigit * 10;
        $word = $word . ' ' . $spelling[$secondDigit];
        }       
        $thirdDigit = $number % 10;
        if ($thirdDigit != 0) {
            $word = $word . ' ' . $spelling[$thirdDigit];
        }
    }
    return $word;   
    }
    
    function numberToText($number) {
        $number = splitNumberToText($number) . ' ' . '(' . $number . ')' . inclineWord($number);
        return $number;
    }
    
    $amount1 = mt_rand(1,99999999);
    $text1 = numberToText($amount1);
    echo "На вашем счету{$text1}\n";
     
    $amount2 = mt_rand(1,99999999);
    $text2 = numberToText($amount2);
    echo "На вашем счету{$text2}\n";
    
    $amount3 = mt_rand(1,99999999);
    $text3 = numberToText($amount3);
    echo "На вашем счету{$text3}\n";
    
    $amount4 = mt_rand(1,99999999);
    $text4 = numberToText($amount4);
    echo "На вашем счету{$text4}\n";