SHARE
TWEET

Untitled

a guest Sep 24th, 2018 76 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3.  
  4.  
  5. // Staring straight up into the sky ... oh my my
  6. error_reporting(-1);
  7. mb_internal_encoding('utf-8');
  8.  
  9. function numberToText($number,$arr=[]) {
  10.      define('AMOUNT','(' . $number . ')');
  11.       $opNumber=$number % 1000;
  12.        $spelling = array(
  13.         0   =>  'ноль',                                     10  =>  'десять',       100 =>  'сто',
  14.         1   =>  'один',         11  =>  'одиннадцать',      20  =>  'двадцать',     200 =>  'двести',
  15.         2   =>  'два',          12  =>  'двенадцать',       30  =>  'тридцать',     300 =>  'триста',
  16.         3   =>  'три',          13  =>  'тринадцать',       40  =>  'сорок',        400 =>  'четыреста',
  17.         4   =>  'четыре',       14  =>  'четырнадцать',     50  =>  'пятьдесят',    500 =>  'пятьсот',
  18.         5   =>  'пять',         15  =>  'пятнадцать',       60  =>  'шестьдесят',   600 =>  'шестьсот',
  19.         6   =>  'шесть',        16  =>  'шестнадцать',      70  =>  'семьдесят',    700 =>  'семьсот',    
  20.         7   =>  'семь',         17  =>  'семнадцать',       80  =>  'восемьдесят',   800 =>  'восемьсот',
  21.         8   =>  'восемь',       18  =>  'восемнадцать',     90  =>  'девяносто',     900 =>  'девятьсот',
  22.         9   =>  'девять',       19  =>  'девятнадцать'    
  23.     );
  24.    
  25.    if ($opNumber/100>=0) {
  26.         $firstDigit=floor($opNumber/100); $opNumber-=$firstDigit*100; $firstDigit=$spelling[$firstDigit*100];
  27.     }
  28.  
  29.     if ($opNumber<=19) {
  30.         $secondDigit=0;$lastDigit=$spelling[$opNumber];
  31.     } else {
  32.         $secondDigit=floor($opNumber/10); $opNumber-=$secondDigit*10;$secondDigit=$spelling[$secondDigit*10];
  33.     }
  34.    
  35.     $lastDigit=$spelling[$opNumber];
  36.     $x=($firstDigit&&$firstDigit!='ноль'?"$firstDigit ":'') . ($secondDigit&&$secondDigit!='ноль'?"$secondDigit ":'') . ($lastDigit&&$lastDigit!='ноль'?"$lastDigit":'');
  37.    
  38.     array_push($arr,$x);
  39.    
  40.     //recursion is passing into arguments a number, decremented each loop by 3 digits
  41.     //the idea behind recursion will be like this
  42.     //f(n) code n%1000 //work on last 3 digits
  43.     //if n/1000>1 return function (~~n/1000)
  44.    
  45.     if ($number / 1000 >=1) {
  46.         return numberToText(floor($number / 1000),$arr);
  47.     }
  48.    
  49.  
  50.  
  51.     $preString="" . ($arr[2]?
  52.                      preg_match('/(два|три|четыре)$/u',$arr[2])?"{$arr[2]} миллиона":(preg_match('/(один)$/u',$arr[2])?"{$arr[2]} миллион":"{$arr[2]} миллионов")
  53.                      :'') . ($arr[1]?
  54.                              preg_match('/(два|три|четыре)$/u',$arr[1])?' ' . $arr[1] . ' тысячи':(preg_match('/(одна)$/u',$arr[1])?" {$arr[1]} тысяча":" {$arr[1]} тысяч")
  55.                              :'') . ($arr[0]?
  56.                                     preg_match('/(два|три|четыре)$/u',$arr[0])?' ' . $arr[0] . ' ' . AMOUNT . ' рубля':(preg_match('/(один)$/u',$arr[0])?" {$arr[0]}" . ' ' . AMOUNT. ' рубль':" {$arr[0]}" . ' ' . AMOUNT . ' рублей')
  57.                                     :' '. AMOUNT . ' рублей');
  58.     $preString=preg_replace('/два тысячи/u','две тысячи',$preString);
  59.    
  60.  
  61.     return $preString;
  62. }
  63.  
  64.  
  65. $amount1 = mt_rand(1,99999999);
  66. $text1 = numberToText($amount1);
  67.  
  68.  
  69. echo "На вашем счету {$text1}\n";
  70. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top