fork(1) download
  1. <?php
  2.  
  3. // Staring straight up into the sky ... oh my my
  4.  
  5.  
  6. /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
  7. function inclineWord($number, $word1, $word2, $word5) {
  8. /* DIY */
  9. }
  10.  
  11. /*
  12.   Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
  13.   если мы считаем число для мужского рода (один рубль),
  14.   и 1 — для женского (одна тысяча)
  15. */
  16. function smallNumberToText($number, $isFemale) {
  17.  
  18. $text = '';
  19. $spelling = array(
  20. 0 => 'ноль', 10 => 'десять', 100 => 'сто',
  21. 1 => 'один', 11 => 'одиннадцать', 20 => 'двадцать', 200 => 'двести',
  22. 2 => 'два', 12 => 'двенадцать', 30 => 'тридцать', 300 => 'триста',
  23. 3 => 'три', 13 => 'тринадцать', 40 => 'сорок', 400 => 'четыреста',
  24. 4 => 'четыре', 14 => 'четырнадцать', 50 => 'пятьдесят', 500 => 'пятьсот',
  25. 5 => 'пять', 15 => 'пятнадцать', 60 => 'шестьдесят', 600 => 'шестьсот',
  26. 6 => 'шесть', 16 => 'шестнадцать', 70 => 'семьдесят', 700 => 'семьсот',
  27. 7 => 'семь', 17 => 'семнадцать', 80 => 'восемьдесят', 800 => 'восемьсот',
  28. 8 => 'восемь', 18 => 'восемнадцать', 90 => 'девяносто', 900 => 'девятьсот',
  29. 9 => 'девять', 19 => 'девятнадцать'
  30. );
  31.  
  32. $femaleSpelling = array(
  33. 1 => 'одна', 2 => 'две'
  34. );
  35.  
  36. if ($number < 10) {
  37. $number = $spelling[$number % 10];
  38. return $number;
  39. }
  40. if (($number > 9) and ($number < 20)) {
  41. $number = $spelling[$number % 100];
  42. return $number;
  43. }
  44. if ($number < 100) {
  45. $number = $spelling[($number % 100) - ($number % 10)].$spelling[$number % 10];
  46. return $number;
  47. }
  48. if ($number < 1000) {
  49. $number = $spelling[$number - ($number % 100)].' '.$spelling[($number % 100) - ($number % 10)].' '.$spelling[$number % 10];
  50. return $number;
  51. }
  52. }
  53.  
  54. function numberToText($number) {
  55.  
  56. if ($number == 0) {
  57. return 'ноль (0) рублей';
  58. }
  59.  
  60. $a=$number % 10;
  61. $b=$number % 100;
  62.  
  63. if ($number < 1000) {
  64. $textNumber = smallNumberToText ($number);
  65.  
  66. if ($a == 0) {
  67. $textNumber = preg_replace ('/ноль/u', '', $textNumber);
  68. return "$textNumber ($number) рублей";
  69. }
  70.  
  71. if ($b == 0 ) {
  72. $textNumber = preg_replace ('/ноль/u', '', $textNumber);
  73. return "$textNumber ($number) рублей";
  74. }
  75.  
  76. if (($a < 5) and ($a != 1) and ($a != 0)) {
  77. return "$textNumber ($number) рубля";
  78. }
  79. if (($a >= 5) and ($a < 10)) {
  80. return "$textNumber ($number) рублей";
  81. }
  82. if ($a == 1) {
  83. return "$textNumber ($number) рубль";
  84. }
  85. if (($b >= 10) and ($b < 20)){
  86. return "$textNumber ($number) рублей";
  87. }
  88. }
  89. }
  90. /* Вызовем функцию несколько раз */
  91. $number = 302;
  92. $text1 = numberToText($number);
  93.  
  94. echo "На вашем счету {$text1}\n";
  95. echo $number;
Success #stdin #stdout #stderr 0.03s 52480KB
stdin
Standard input is empty
stdout
На вашем счету триста ноль два (302) рубля
302
stderr
PHP Warning:  Missing argument 2 for smallNumberToText(), called in /home/15mtSB/prog.php on line 66 and defined in /home/15mtSB/prog.php on line 18