Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Staring straight up into the sky ... oh my my
- error_reporting(-1);
- mb_internal_encoding('utf-8');
- function numberToText($number,$arr=[]) {
- define('AMOUNT','(' . $number . ')');
- $opNumber=$number % 1000;
- $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 ($opNumber/100>=0) {
- $firstDigit=floor($opNumber/100); $opNumber-=$firstDigit*100; $firstDigit=$spelling[$firstDigit*100];
- }
- if ($opNumber<=19) {
- $secondDigit=0;$lastDigit=$spelling[$opNumber];
- } else {
- $secondDigit=floor($opNumber/10); $opNumber-=$secondDigit*10;$secondDigit=$spelling[$secondDigit*10];
- }
- $lastDigit=$spelling[$opNumber];
- $x=($firstDigit&&$firstDigit!='ноль'?"$firstDigit ":'') . ($secondDigit&&$secondDigit!='ноль'?"$secondDigit ":'') . ($lastDigit&&$lastDigit!='ноль'?"$lastDigit":'');
- array_push($arr,$x);
- //recursion is passing into arguments a number, decremented each loop by 3 digits
- //the idea behind recursion will be like this
- //f(n) code n%1000 //work on last 3 digits
- //if n/1000>1 return function (~~n/1000)
- if ($number / 1000 >=1) {
- return numberToText(floor($number / 1000),$arr);
- }
- $preString="" . ($arr[2]?
- preg_match('/(два|три|четыре)$/u',$arr[2])?"{$arr[2]} миллиона":(preg_match('/(один)$/u',$arr[2])?"{$arr[2]} миллион":"{$arr[2]} миллионов")
- :'') . ($arr[1]?
- preg_match('/(два|три|четыре)$/u',$arr[1])?' ' . $arr[1] . ' тысячи':(preg_match('/(одна)$/u',$arr[1])?" {$arr[1]} тысяча":" {$arr[1]} тысяч")
- :'') . ($arr[0]?
- preg_match('/(два|три|четыре)$/u',$arr[0])?' ' . $arr[0] . ' ' . AMOUNT . ' рубля':(preg_match('/(один)$/u',$arr[0])?" {$arr[0]}" . ' ' . AMOUNT. ' рубль':" {$arr[0]}" . ' ' . AMOUNT . ' рублей')
- :' '. AMOUNT . ' рублей');
- $preString=preg_replace('/два тысячи/u','две тысячи',$preString);
- return $preString;
- }
- $amount1 = mt_rand(1,99999999);
- $text1 = numberToText($amount1);
- echo "На вашем счету {$text1}\n";
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement