fork(1) download
  1. <?php
  2.  
  3.  
  4. function inclineWord($number, $word1, $word2, $word5) {
  5. if($number%10 == 0) {
  6. return $word5;
  7. }
  8. elseif(($number%100 >= 11) && ($number%100 <= 14)) {
  9. return $word5;
  10. }
  11. elseif($number%10 == 1) {
  12. return $word1;
  13. }
  14. elseif($number%10 < 5) {
  15. return $word2;
  16. }
  17. else { return $word5; }
  18. }
  19.  
  20. function checkFemale($number) {
  21. if($number < 10000) {
  22. $number = floor($number/1000);
  23. if($number == 1 || $number ==2) { return 1; }
  24. else { return 0; }
  25. }
  26. else {
  27. $number = floor($number/1000%100);
  28. if($number == 11 || $number == 12) { return 0; }
  29. elseif ($number%10 == 1 || $number%10 == 2) { return 1; }
  30. else { return 0; }
  31. }
  32. }
  33.  
  34. function smallNumberToText($number, $isFemale) {
  35.  
  36. $spelling = array(
  37. 0 => 'ноль', 10 => 'десять', 100 => 'сто',
  38. 1 => 'один', 11 => 'одиннадцать', 20 => 'двадцать', 200 => 'двести',
  39. 2 => 'два', 12 => 'двенадцать', 30 => 'тридцать', 300 => 'триста',
  40. 3 => 'три', 13 => 'тринадцать', 40 => 'сорок', 400 => 'четыреста',
  41. 4 => 'четыре', 14 => 'четырнадцать', 50 => 'пятьдесят', 500 => 'пятьсот',
  42. 5 => 'пять', 15 => 'пятнадцать', 60 => 'шестьдесят', 600 => 'шестьсот',
  43. 6 => 'шесть', 16 => 'шестнадцать', 70 => 'семьдесят', 700 => 'семьсот',
  44. 7 => 'семь', 17 => 'семнадцать', 80 => 'восемьдесят', 800 => 'восемьсот',
  45. 8 => 'восемь', 18 => 'восемнадцать', 90 => 'девяносто', 900 => 'девятьсот',
  46. 9 => 'девять', 19 => 'девятнадцать'
  47. );
  48.  
  49. $femaleSpelling = array(
  50. 1 => 'одна', 2 => 'две'
  51. );
  52. if($isFemale == 1) {
  53. return preg_replace('/ноль/','',$spelling[floor($number/100)*100]." ".$spelling[floor($number%100/10)*10]." ".$femaleSpelling[$number%10]);
  54. }
  55.  
  56. if($number == 0) {
  57. return $spelling[$number];
  58. }
  59. elseif(($number%100)==0) {
  60. return $spelling[floor($number/100)*100]; //900
  61. }
  62. elseif($number%100<20) {
  63. return preg_replace('/^ноль/','',$spelling[floor($number/100)*100]." ".$spelling[$number%100]." "); //913
  64. }
  65. elseif($number%100>19 && $number%10 == 0) {
  66. return preg_replace('/^ноль/','',$spelling[floor($number/100)*100]." ".$spelling[$number/10%10*10]." "); //990
  67. }
  68. else {
  69. return preg_replace('/^ноль/','',$spelling[floor($number/100)*100]." ".$spelling[floor(($number%100)/10)*10]." ".$spelling[$number%10]); //999
  70. }
  71. }
  72.  
  73. function numberToText($number) {
  74. if($number<1000) {
  75. return smallNumberToText($number, 0)." ".inclineWord($number, "рубль", "рубля", "рублей");
  76. }
  77. elseif($number == 1000) {
  78. return "одня тысяча рублей";
  79. }
  80. elseif($number<1000000) {
  81. $female = checkFemale($number);
  82. $impNumber = [0, 1];
  83. $impNumber[0] = smallNumberToText(floor($number/1000), $female)." ".inclineWord(floor($number/1000), "тысяча", "тысячи", "тысяч");
  84. $impNumber[1] = smallNumberToText($number%1000, 0)." ".inclineWord($number, "рубль", "рубля", "рублей");
  85. return implode(' ', $impNumber);
  86. }
  87. elseif($number == 1000000) {
  88. return "один миллион рублей";
  89. }
  90. elseif($number < 100000000) {
  91. $female = checkFemale($number);
  92. $impNumber = [0, 1, 2];//222
  93. $impNumber[0] = smallNumberToText(floor($number/1000000), 0)." ".inclineWord(floor($number/1000000), "миллион", "миллиона", "миллионов");
  94. $impNumber[1] = smallNumberToText(floor($number%1000000/1000), $female)." ".inclineWord(floor($number%1000000/1000), "тысяча", "тысячи", "тысяч");
  95. $impNumber[2] = smallNumberToText($number%1000, 0)." ".inclineWord($number, "рубль", "рубля", "рублей");
  96. return implode(' ', $impNumber);
  97. }
  98. }
  99.  
  100. $amount1 = mt_rand(1,99999999);
  101. $text1 = numberToText($amount1);
  102.  
  103. echo "На вашем счету {$text1}<br>";
  104.  
  105. $amount2 = mt_rand(1,99999999);
  106. $text2 = numberToText($amount2);
  107.  
  108. echo "На вашем счету {$text2}<br>";
  109.  
  110. $amount3 = mt_rand(1,99999999);
  111. $text3 = numberToText($amount3);
  112.  
  113. echo "На вашем счету {$text3}<br>";
  114.  
  115. $amount4 = mt_rand(1,99999999);
  116. $text4 = numberToText($amount4);
  117.  
  118. echo "На вашем счету {$text4}<br>";
  119.  
  120.  
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
На вашем счету  двадцать семь миллионов сто семьдесят  тысяч девятьсот шестьдесят семь рублей<br>На вашем счету  шесть  миллионов сто сорок три тысячи триста четыре  рубля<br>На вашем счету  тридцать пять миллионов восемьсот семьдесят четыре тысячи сто девяносто два рубля<br>На вашем счету  шестьдесят четыре миллиона двести шестьдесят пять тысяч пятьсот девяносто четыре рубля<br>