<?php
// Staring straight up into the sky ... oh my my
/* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
function inclineWord( $number , $word1 , $word2 , $word5 )
{
$lastd = $number % 100 ;
if ( $lastd != 11 && $number % 10 == 1 ) {
$words = $word1 ;
} elseif ( $number % 10 > 1 && $number % 10 < 5 && ( $lastd < 10 || $lastd > 20 ) ) {
$words = $word2 ;
} else {
$words = $word5 ;
}
return $words ;
/* DIY */
}
/*
Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
если мы считаем число для мужского рода (один рубль),
и 1 — для женского (одна тысяча)
*/
function smallNumberToText( $number , $isFemale )
{
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 => 'девятнадцать'
) ;
1 => 'одна' ,
2 => 'две'
) ;
$hund = $number % 100 ;
if ( $hund == 0 ) {
$fulltext = "" ;
} elseif ( $hund > 20 ) {
$hund1 = ( floor ( $hund / 10 ) ) * 10 ; $hund2 = $hund % 10 ;
if ( $hund2 == 0 ) {
$fulltext = $spelling [ $hund1 ] ;
} elseif ( $isFemale == 1 ) {
$fulltext = $spelling [ $hund1 ] . " " . $femaleSpelling [ $hund2 ] ;
} else {
$fulltext = $spelling [ $hund1 ] . " " . $spelling [ $hund2 ] ;
}
} else {
if ( $isFemale == 1 && $hund < 11 ) {
$fulltext = $femaleSpelling [ $hund ] ;
} else {
$fulltext = $spelling [ $hund ] ;
}
}
$tho = $number % 1000 ;
if ( $tho >= 100 ) {
$tho = ( floor ( $tho / 100 ) ) * 100 ; $fulltext = $spelling [ $tho ] . " " . $fulltext ;
}
return $fulltext ;
/* DIY */
}
function numberToText( $number )
{
if ( $number < 1000 ) {
$text = smallNumberToText( $number , 0 ) . " " . inclineWord( $number , "рубль" , "рубля" , "рублей" ) ;
} elseif ( $number >= 1000 ) {
$mod = $number % 10000 ;
$mod = floor ( $mod / 1000 ) ; $last2d = floor ( ( $number % 100000 ) / 1000 ) ; if ( $mod == 1 && ( $last2d < 11 || $last2d > 20 ) ) {
$mod = 1 ;
$word = "тысяча" ;
} elseif ( $mod == 2 && ( $last2d < 11 || $last2d > 20 ) ) {
$mod = 1 ;
$word = "тысячи" ;
} elseif ( $mod > 2 && $mod < 5 ) {
$mod = 0 ;
$word = "тысячи" ;
} else {
$mod = 0 ;
$word = "тысяч" ;
}
$thou = $number / 1000 ;
$text = smallNumberToText( $thou , $mod ) . " $word " . smallNumberToText( $number , 0 ) . " " . inclineWord( $number , "рубль" , "рубля" , "рублей" ) ;
}
if ( $number >= 1000000 ) {
$bill = floor ( $number / 1000000 ) ; $check = $bill % 10 ;
$check2 = $bill % 100 ;
if ( $check == 1 && ( $check2 < 11 || $check2 > 20 ) ) {
$word2 = "миллион" ;
} elseif ( $check > 1 && $check < 5 && ( $check2 < 11 || $check2 > 20 ) ) {
$word2 = "миллиона" ;
} else {
$word2 = "миллионов" ;
}
$text = smallNumberToText( $bill , 0 ) . " $word2 " . $text ;
}
/* DIY */
return $text ;
}
/* Вызовем функцию несколько раз */
for ( $i = 1 ; $i <= 15 ; $i ++ ) {
$text = numberToText( $amount ) ;
echo "На вашем счету {$text} \n " ;
}
PD9waHAKCi8vIFN0YXJpbmcgc3RyYWlnaHQgdXAgaW50byB0aGUgc2t5IC4uLiBvaCBteSBteQplcnJvcl9yZXBvcnRpbmcoLTEpOwptYl9pbnRlcm5hbF9lbmNvZGluZygndXRmLTgnKTsKCgovKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidGD0Y4g0YfQuNGB0LvRgyDRhNC+0YDQvNGDINGB0LvQvtCy0LA6IDEg0YDRg9Cx0LvRjCwgMiDRgNGD0LHQu9GPLCA1INGA0YPQsdC70LXQuSAqLwpmdW5jdGlvbiBpbmNsaW5lV29yZCgkbnVtYmVyLCAkd29yZDEsICR3b3JkMiwgJHdvcmQ1KQp7CiAgICAkbGFzdGQgPSAkbnVtYmVyICUgMTAwOwogICAgaWYgKCRsYXN0ZCAhPSAxMSAmJiAkbnVtYmVyICUgMTAgPT0gMSkgewogICAgICAgICR3b3JkcyA9ICR3b3JkMTsKICAgIH0gZWxzZWlmICgkbnVtYmVyICUgMTAgPiAxICYmICRudW1iZXIgJSAxMCA8IDUgJiYgKCRsYXN0ZCA8IDEwIHx8ICRsYXN0ZCA+IDIwKSkgewogICAgICAgICR3b3JkcyA9ICR3b3JkMjsKICAgIH0gZWxzZSB7CiAgICAgICAgJHdvcmRzID0gJHdvcmQ1OwogICAgfQogICAgCiAgICByZXR1cm4gJHdvcmRzOwogICAgLyogRElZICovCn0KCi8qIArQn9GA0LXQvtCx0YDQsNC30YPQtdGCINGH0LjRgdC70LAg0L7RgiAwINC00L4gOTk5INCyINGC0LXQutGB0YIuINCf0LDRgNCw0LzQtdGC0YAgJGlzRmVtYWxlINGA0LDQstC10L0g0L3Rg9C70Y4sIArQtdGB0LvQuCDQvNGLINGB0YfQuNGC0LDQtdC8INGH0LjRgdC70L4g0LTQu9GPINC80YPQttGB0LrQvtCz0L4g0YDQvtC00LAgKNC+0LTQuNC9INGA0YPQsdC70YwpLCAK0LggMSDigJQg0LTQu9GPINC20LXQvdGB0LrQvtCz0L4gKNC+0LTQvdCwINGC0YvRgdGP0YfQsCkgCiovCmZ1bmN0aW9uIHNtYWxsTnVtYmVyVG9UZXh0KCRudW1iZXIsICRpc0ZlbWFsZSkKewogICAgCiAgICAkc3BlbGxpbmcgPSBhcnJheSgKICAgICAgICAwID0+ICfQvdC+0LvRjCcsCiAgICAgICAgMTAgPT4gJ9C00LXRgdGP0YLRjCcsCiAgICAgICAgMTAwID0+ICfRgdGC0L4nLAogICAgICAgIDEgPT4gJ9C+0LTQuNC9JywKICAgICAgICAxMSA9PiAn0L7QtNC40L3QvdCw0LTRhtCw0YLRjCcsCiAgICAgICAgMjAgPT4gJ9C00LLQsNC00YbQsNGC0YwnLAogICAgICAgIDIwMCA9PiAn0LTQstC10YHRgtC4JywKICAgICAgICAyID0+ICfQtNCy0LAnLAogICAgICAgIDEyID0+ICfQtNCy0LXQvdCw0LTRhtCw0YLRjCcsCiAgICAgICAgMzAgPT4gJ9GC0YDQuNC00YbQsNGC0YwnLAogICAgICAgIDMwMCA9PiAn0YLRgNC40YHRgtCwJywKICAgICAgICAzID0+ICfRgtGA0LgnLAogICAgICAgIDEzID0+ICfRgtGA0LjQvdCw0LTRhtCw0YLRjCcsCiAgICAgICAgNDAgPT4gJ9GB0L7RgNC+0LonLAogICAgICAgIDQwMCA9PiAn0YfQtdGC0YvRgNC10YHRgtCwJywKICAgICAgICA0ID0+ICfRh9C10YLRi9GA0LUnLAogICAgICAgIDE0ID0+ICfRh9C10YLRi9GA0L3QsNC00YbQsNGC0YwnLAogICAgICAgIDUwID0+ICfQv9GP0YLRjNC00LXRgdGP0YInLAogICAgICAgIDUwMCA9PiAn0L/Rj9GC0YzRgdC+0YInLAogICAgICAgIDUgPT4gJ9C/0Y/RgtGMJywKICAgICAgICAxNSA9PiAn0L/Rj9GC0L3QsNC00YbQsNGC0YwnLAogICAgICAgIDYwID0+ICfRiNC10YHRgtGM0LTQtdGB0Y/RgicsCiAgICAgICAgNjAwID0+ICfRiNC10YHRgtGM0YHQvtGCJywKICAgICAgICA2ID0+ICfRiNC10YHRgtGMJywKICAgICAgICAxNiA9PiAn0YjQtdGB0YLQvdCw0LTRhtCw0YLRjCcsCiAgICAgICAgNzAgPT4gJ9GB0LXQvNGM0LTQtdGB0Y/RgicsCiAgICAgICAgNzAwID0+ICfRgdC10LzRjNGB0L7RgicsCiAgICAgICAgNyA9PiAn0YHQtdC80YwnLAogICAgICAgIDE3ID0+ICfRgdC10LzQvdCw0LTRhtCw0YLRjCcsCiAgICAgICAgODAgPT4gJ9Cy0L7RgdC10LzRjNC00LXRgdGP0YInLAogICAgICAgIDgwMCA9PiAn0LLQvtGB0LXQvNGM0YHQvtGCJywKICAgICAgICA4ID0+ICfQstC+0YHQtdC80YwnLAogICAgICAgIDE4ID0+ICfQstC+0YHQtdC80L3QsNC00YbQsNGC0YwnLAogICAgICAgIDkwID0+ICfQtNC10LLRj9C90L7RgdGC0L4nLAogICAgICAgIDkwMCA9PiAn0LTQtdCy0Y/RgtGM0YHQvtGCJywKICAgICAgICA5ID0+ICfQtNC10LLRj9GC0YwnLAogICAgICAgIDE5ID0+ICfQtNC10LLRj9GC0L3QsNC00YbQsNGC0YwnCiAgICApOwogICAgCiAgICAkZmVtYWxlU3BlbGxpbmcgPSBhcnJheSgKICAgICAgICAxID0+ICfQvtC00L3QsCcsCiAgICAgICAgMiA9PiAn0LTQstC1JwogICAgKTsKICAgIAogICAgCiAgICAkaHVuZCA9ICRudW1iZXIgJSAxMDA7CiAgICBpZiAoJGh1bmQgPT0gMCkgewogICAgICAgICRmdWxsdGV4dCA9ICIiOwogICAgfSBlbHNlaWYgKCRodW5kID4gMjApIHsKICAgICAgICAkaHVuZDEgPSAoZmxvb3IoJGh1bmQgLyAxMCkpICogMTA7CiAgICAgICAgJGh1bmQyID0gJGh1bmQgJSAxMDsKICAgICAgICBpZiAoJGh1bmQyID09IDApIHsKICAgICAgICAgICAgJGZ1bGx0ZXh0ID0gJHNwZWxsaW5nWyRodW5kMV07CiAgICAgICAgfSBlbHNlaWYgKCRpc0ZlbWFsZSA9PSAxKSB7CiAgICAgICAgICAgICRmdWxsdGV4dCA9ICRzcGVsbGluZ1skaHVuZDFdIC4gIiAiIC4gJGZlbWFsZVNwZWxsaW5nWyRodW5kMl07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGZ1bGx0ZXh0ID0gJHNwZWxsaW5nWyRodW5kMV0gLiAiICIgLiAkc3BlbGxpbmdbJGh1bmQyXTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmICgkaXNGZW1hbGUgPT0gMSAmJiAkaHVuZCA8IDExKSB7CiAgICAgICAgICAgICRmdWxsdGV4dCA9ICRmZW1hbGVTcGVsbGluZ1skaHVuZF07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGZ1bGx0ZXh0ID0gJHNwZWxsaW5nWyRodW5kXTsKICAgICAgICB9CiAgICB9CiAgICAkdGhvID0gJG51bWJlciAlIDEwMDA7CiAgICBpZiAoJHRobyA+PSAxMDApIHsKICAgICAgICAkdGhvICAgICAgPSAoZmxvb3IoJHRobyAvIDEwMCkpICogMTAwOwogICAgICAgICRmdWxsdGV4dCA9ICRzcGVsbGluZ1skdGhvXSAuICIgIiAuICRmdWxsdGV4dDsKICAgIH0KICAgIAogICAgcmV0dXJuICRmdWxsdGV4dDsKICAgIAogICAgCiAgICAvKiBESVkgKi8KfQoKCmZ1bmN0aW9uIG51bWJlclRvVGV4dCgkbnVtYmVyKQp7CiAgICBpZiAoJG51bWJlciA8IDEwMDApIHsKICAgICAgICAkdGV4dCA9IHNtYWxsTnVtYmVyVG9UZXh0KCRudW1iZXIsIDApIC4gIiAiIC4gaW5jbGluZVdvcmQoJG51bWJlciwgItGA0YPQsdC70YwiLCAi0YDRg9Cx0LvRjyIsICLRgNGD0LHQu9C10LkiKTsKICAgIH0gZWxzZWlmICgkbnVtYmVyID49IDEwMDApIHsKICAgICAgICAkbW9kICAgID0gJG51bWJlciAlIDEwMDAwOwogICAgICAgICRtb2QgICAgPSBmbG9vcigkbW9kIC8gMTAwMCk7CiAgICAgICAgJGxhc3QyZCA9IGZsb29yKCgkbnVtYmVyICUgMTAwMDAwKSAvIDEwMDApOwogICAgICAgIGlmICgkbW9kID09IDEgJiYgKCRsYXN0MmQgPCAxMSB8fCAkbGFzdDJkID4gMjApKSB7CiAgICAgICAgICAgICRtb2QgID0gMTsKICAgICAgICAgICAgJHdvcmQgPSAi0YLRi9GB0Y/Rh9CwIjsKICAgICAgICB9IGVsc2VpZiAoJG1vZCA9PSAyICYmICgkbGFzdDJkIDwgMTEgfHwgJGxhc3QyZCA+IDIwKSkgewogICAgICAgICAgICAkbW9kICA9IDE7CiAgICAgICAgICAgICR3b3JkID0gItGC0YvRgdGP0YfQuCI7CiAgICAgICAgfSBlbHNlaWYgKCRtb2QgPiAyICYmICRtb2QgPCA1KSB7CiAgICAgICAgICAgICRtb2QgID0gMDsKICAgICAgICAgICAgJHdvcmQgPSAi0YLRi9GB0Y/Rh9C4IjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbW9kICA9IDA7CiAgICAgICAgICAgICR3b3JkID0gItGC0YvRgdGP0YciOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkdGhvdSA9ICRudW1iZXIgLyAxMDAwOwogICAgICAgIAogICAgICAgICR0ZXh0ID0gc21hbGxOdW1iZXJUb1RleHQoJHRob3UsICRtb2QpIC4gIiAkd29yZCAiIC4gc21hbGxOdW1iZXJUb1RleHQoJG51bWJlciwgMCkgLiAiICIgLiBpbmNsaW5lV29yZCgkbnVtYmVyLCAi0YDRg9Cx0LvRjCIsICLRgNGD0LHQu9GPIiwgItGA0YPQsdC70LXQuSIpOwogICAgfQogICAgaWYgKCRudW1iZXIgPj0gMTAwMDAwMCkgewogICAgICAgIAogICAgICAgIAogICAgICAgICRiaWxsICAgPSBmbG9vcigkbnVtYmVyIC8gMTAwMDAwMCk7CiAgICAgICAgJGNoZWNrICA9ICRiaWxsICUgMTA7CiAgICAgICAgJGNoZWNrMiA9ICRiaWxsICUgMTAwOwogICAgICAgIAogICAgICAgIGlmICgkY2hlY2sgPT0gMSAmJiAoJGNoZWNrMiA8IDExIHx8ICRjaGVjazIgPiAyMCkpIHsKICAgICAgICAgICAgJHdvcmQyID0gItC80LjQu9C70LjQvtC9IjsKICAgICAgICB9IGVsc2VpZiAoJGNoZWNrID4gMSAmJiAkY2hlY2sgPCA1ICYmICgkY2hlY2syIDwgMTEgfHwgJGNoZWNrMiA+IDIwKSkgewogICAgICAgICAgICAkd29yZDIgPSAi0LzQuNC70LvQuNC+0L3QsCI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHdvcmQyID0gItC80LjQu9C70LjQvtC90L7QsiI7CiAgICAgICAgfQogICAgICAgICR0ZXh0ID0gc21hbGxOdW1iZXJUb1RleHQoJGJpbGwsIDApIC4gIiAkd29yZDIgIiAuICR0ZXh0OwogICAgfQogICAgCiAgICAvKiBESVkgKi8KICAgIHJldHVybiAkdGV4dDsKfQoKLyog0JLRi9C30L7QstC10Lwg0YTRg9C90LrRhtC40Y4g0L3QtdGB0LrQvtC70YzQutC+INGA0LDQtyAqLwpmb3IoJGkgPSAxOyAkaTw9MTU7ICRpKyspIHsKICAkYW1vdW50ID0gbXRfcmFuZCgxLCA5OTk5OTk5OSk7CiAgJHRleHQgPSBudW1iZXJUb1RleHQoJGFtb3VudCk7CiAgZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0fVxuIjsKfSAg